rocksdb/db/db_impl
解轶伦 924bc5fb95 delete superversions in BackgroundCallPurge (#6146)
Summary:
I found that CleanupSuperVersion() may block Get() for 30ms+ (per MemTable is 256MB).

Then I found "delete sv" in ~SuperVersion() takes the time.

The backtrace looks like this

DBImpl::GetImpl() -> DBImpl::ReturnAndCleanupSuperVersion() ->
DBImpl::CleanupSuperVersion() : delete sv; -> ~SuperVersion()

I think it's better to delete in a background thread,  please review it。
Pull Request resolved: https://github.com/facebook/rocksdb/pull/6146

Differential Revision: D18972066

fbshipit-source-id: 0f7b0b70b9bb1e27ad6fc1c8a408fbbf237ae08c
2020-01-02 12:20:29 -08:00
..
db_impl_compaction_flush.cc delete superversions in BackgroundCallPurge (#6146) 2020-01-02 12:20:29 -08:00
db_impl_debug.cc Fix IngestExternalFile's bug with two_write_queue (#5976) 2019-11-15 14:00:37 -08:00
db_impl_experimental.cc Support options.max_open_files = -1 with periodic_compaction_seconds (#6090) 2019-11-27 09:50:44 -08:00
db_impl_files.cc Let DBSecondary close files after catch up (#6114) 2019-12-02 17:53:24 -08:00
db_impl_open.cc Support options.max_open_files = -1 with periodic_compaction_seconds (#6090) 2019-11-27 09:50:44 -08:00
db_impl_readonly.cc Apply formatter on recent 45 commits. (#5827) 2019-09-19 12:34:17 -07:00
db_impl_readonly.h Use delete to disable automatic generated methods. (#5009) 2019-09-11 18:09:00 -07:00
db_impl_secondary.cc delete superversions in BackgroundCallPurge (#6146) 2020-01-02 12:20:29 -08:00
db_impl_secondary.h Let DBSecondary close files after catch up (#6114) 2019-12-02 17:53:24 -08:00
db_impl_write.cc Do not create/install new SuperVersion if nothing was deleted during memtable trim (#6169) 2019-12-17 07:52:22 -08:00
db_impl.cc delete superversions in BackgroundCallPurge (#6146) 2020-01-02 12:20:29 -08:00
db_impl.h delete superversions in BackgroundCallPurge (#6146) 2020-01-02 12:20:29 -08:00
db_secondary_test.cc Let DBSecondary close files after catch up (#6114) 2019-12-02 17:53:24 -08:00