diff --git a/db/db_impl.cc b/db/db_impl.cc index 47afc77..c8e5ea2 100644 --- a/db/db_impl.cc +++ b/db/db_impl.cc @@ -1742,14 +1742,14 @@ void DBImpl::GarbageCollect() { valuelog_set.emplace(filename); } } - //bool tmp_judge=false;//only clean one file + bool tmp_judge=false;//only clean one file for (std::string valuelog_name : valuelog_set) { - // if(tmp_judge){ - // break; - // } - // else{ - // tmp_judge=true; - // } + if(tmp_judge){ + break; + } + else{ + tmp_judge=true; + } uint64_t cur_log_number = GetValueLogID(valuelog_name); valuelog_name = ValueLogFileName(dbname_, cur_log_number); if (cur_log_number == valuelogfile_number_) { diff --git a/设计文档.assets/image-20241210005029291.png b/设计文档.assets/image-20241210005029291.png new file mode 100644 index 0000000..1e2b81f Binary files /dev/null and b/设计文档.assets/image-20241210005029291.png differ diff --git a/设计文档.md b/设计文档.md index 850aaf6..7ea3a4a 100644 --- a/设计文档.md +++ b/设计文档.md @@ -596,7 +596,7 @@ version_2: version_3: -![image-20241208233143593](设计文档.assets/image-20241208233143593.png) +![image-20241210005029291](设计文档.assets/image-20241210005029291.png) ## 6. 可能遇到的挑战与解决方案 @@ -650,4 +650,5 @@ version_3: - [ ] 对范围查询做ValueLog预取优化 - [ ] 对valueLog做压缩优化(?) - [ ] 实现key-only scan(便利用户,一些场景无需找value) -- [ ] 实现YCSB benchmark测试 \ No newline at end of file +- [ ] 实现YCSB benchmark测试 +- [ ] 使用内存表或者元数据表做valueLog空洞率记录 \ No newline at end of file