diff --git a/db/fields.cc b/db/fields.cc
index dd37277..c0d979f 100644
--- a/db/fields.cc
+++ b/db/fields.cc
@@ -7,6 +7,7 @@ namespace leveldb {
      assert(!field_array.empty());
      for (const auto& field : field_array) {
        this->_fields[field.first] = field.second;
+       this->size_ += field.first.size() + field.second.size();
      }
    }
 
@@ -25,7 +26,7 @@ namespace leveldb {
       Slice value = Slice(field.data() + name_size, field.size() - name_size);
 
       this->_fields[name.ToString()] = value.ToString();
-
+      this->size_ += name.ToString().size() + value.ToString().size();
       fields = Slice(fields.data() + field_size, fields.size() - field_size);
     }
   }
diff --git a/db/fields.h b/db/fields.h
index 411a29b..1c7ffbf 100644
--- a/db/fields.h
+++ b/db/fields.h
@@ -33,8 +33,11 @@ namespace leveldb {
     // 将Fields编码为存入LevelDB的Value
     std::string Serialize() const;
 
+    uint64_t size() const { return size_; }
+
   private:
     std::map<std::string, std::string> _fields;
+    uint64_t size_ = 0;
   };
 }  // namespace leveldb
 #endif //STORAGE_LEVELDB_FIELDS_H_