• daheiantian's avatar
    Recommit "Avoid adding tombstones of the same file to RangeDelAggregator multiple times" · 72942ad7
    daheiantian 提交于
    Summary:
    The origin commit #3635  will hurt performance for users who aren't using range deletions, because unneeded std::set operations, so it was reverted by commit 44653c7b. (see #3672)
    
    To fix this, move the set to  and add a check in , i.e., file will be added only if  is non-nullptr.
    
    The db_bench command which find the performance regression:
    > ./db_bench --benchmarks=fillrandom,seekrandomwhilewriting --threads=1 --num=1000000 --reads=150000 --key_size=66 > --value_size=1262 --statistics=0 --compression_ratio=0.5 --histogram=1 --seek_nexts=1 --stats_per_interval=1 > --stats_interval_seconds=600 --max_background_flushes=4 --num_multi_db=1 --max_background_compactions=16 --seed=1522388277 > -write_buffer_size=1048576 --level0_file_num_compaction_trigger=10000 --compression_type=none
    
    Before and after the modification, I re-run this command on the machine, the results of are as follows:
    
      **fillrandom**
     Table | P50 | P75 | P99 | P99.9 | P99.99 |
      ---- | --- | --- | --- | ----- | ------ |
     before commit | 5.92 | 8.57 | 19.63 | 980.97 | 12196.00 |
     after commit  | 5.91 | 8.55 | 19.34 | 965.56 | 13513.56 |
    
     **seekrandomwhilewriting**
      Table | P50 | P75 | P99 | P99.9 | P99.99 |
       ---- | --- | --- | --- | ----- | ------ |
     before commit | 1418.62 | 1867.01 | 3823.28 | 4980.99 | 9240.00 |
     after commit  | 1450.54 | 1880.61 | 3962.87 | 5429.60 | 7542.86 |
    Closes https://github.com/facebook/rocksdb/pull/3800
    
    Differential Revision: D7874245
    
    Pulled By: ajkr
    
    fbshipit-source-id: 2e8bec781b3f7399246babd66395c88619534a17
    72942ad7
table_cache.cc 17.0 KB