• Y
    Iterator with timestamp (#6255) · d93812c9
    Yanqin Jin 提交于
    Summary:
    Preliminary support for iterator with user timestamp. Current implementation does not consider merge operator and reverse iterator. Auto compaction is also disabled in unit tests.
    
    Create an iterator with timestamp.
    ```
    ...
    read_opts.timestamp = &ts;
    auto* iter = db->NewIterator(read_opts);
    // target is key without timestamp.
    for (iter->Seek(target); iter->Valid(); iter->Next()) {}
    for (iter->SeekToFirst(); iter->Valid(); iter->Next()) {}
    delete iter;
    read_opts.timestamp = &ts1;
    // lower_bound and upper_bound are without timestamp.
    read_opts.iterate_lower_bound = &lower_bound;
    read_opts.iterate_upper_bound = &upper_bound;
    auto* iter1 = db->NewIterator(read_opts);
    // Do Seek or SeekToFirst()
    delete iter1;
    ```
    
    Test plan (dev server)
    ```
    $make check
    ```
    
    Simple benchmarking (dev server)
    1. The overhead introduced by this PR even when timestamp is disabled.
    key size: 16 bytes
    value size: 100 bytes
    Entries: 1000000
    Data reside in main memory, and try to stress iterator.
    Repeated three times on master and this PR.
    - Seek without next
    ```
    ./db_bench -db=/dev/shm/rocksdbtest-1000 -benchmarks=fillseq,seekrandom -enable_pipelined_write=false -disable_wal=true -format_version=3
    ```
    master: 159047.0 ops/sec
    this PR: 158922.3 ops/sec (2% drop in throughput)
    - Seek and next 10 times
    ```
    ./db_bench -db=/dev/shm/rocksdbtest-1000 -benchmarks=fillseq,seekrandom -enable_pipelined_write=false -disable_wal=true -format_version=3 -seek_nexts=10
    ```
    master: 109539.3 ops/sec
    this PR: 107519.7 ops/sec (2% drop in throughput)
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/6255
    
    Differential Revision: D19438227
    
    Pulled By: riversand963
    
    fbshipit-source-id: b66b4979486f8474619f4aa6bdd88598870b0746
    d93812c9
block_based_table_reader.cc 170.1 KB