Skip to content
  • Huisheng Liu's avatar
    make iterator return versions between timestamp bounds (#6544) · 9e89ffb7
    Huisheng Liu authored
    Summary:
    (Based on Yanqin's idea) Add a new field in readoptions as lower timestamp bound for iterator. When the parameter is not supplied (nullptr), the iterator returns the latest visible version of a record. When it is supplied, the existing timestamp field is the upper bound. Together the two serves as a bounded time window. The iterator returns all versions of a record falling in the window.
    
    SeekRandom perf test (10 minutes) on the same development machine ram drive with the same DB data shows no regression (within marge of error). The test is adapted from https://github.com/facebook/rocksdb/wiki/RocksDB-In-Memory-Workload-Performance-Benchmarks.
    base line (commit e860f884):
    seekrandom   : 7.836 micros/op 4082449 ops/sec; (0 of 73481999 found)
    This PR:
    seekrandom   : 7.764 micros/op 4120935 ops/sec; (0 of 71303999 found)
    
    db_bench --db=r:\rocksdb.github --num_levels=6 --key_size=20 --prefix_size=20 --keys_per_prefix=0 --value_size=100 --cache_size=2147483648 --cache_numshardbits=6 --compression_type=none --compression_ratio=1 --min_level_to_compress=-1 --disable_seek_compaction=1 --hard_rate_limit=2 --write_buffer_size=134217728 --max_write_buffer_number=2 --level0_file_num_compaction_trigger=8 --target_file_size_base=134217728 --max_bytes_for_level_base=1073741824 --disable_wal=0 --wal_dir=r:\rocksdb.github\WAL_LOG --sync=0 --verify_checksum=1 --statistics=0 --stats_per_interval=0 --stats_interval=1048576 --histogram=0 --use_plain_table=1 --open_files=-1 --memtablerep=prefix_hash --bloom_bits=10 --bloom_locality=1 --duration=600 --benchmarks=seekrandom --use_existing_db=1 --num=25000000 --threads=32 --allow_concurrent_memtable_write=0
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/6544
    
    Reviewed By: ltamasi
    
    Differential Revision: D20844069
    
    Pulled By: riversand963
    
    fbshipit-source-id: d97f2bf38a323c8c6a68db213b2d3c694b1c1f74
    9e89ffb7