• N
    Don't merge WriteBatch-es if WAL is disabled · 6ce42dd0
    Nathan Bronson 提交于
    Summary:
    There's no need for WriteImpl to flatten the write batch group
    into a single WriteBatch if the WAL is disabled.  This diff moves the
    flattening into the WAL step, and skips flattening entirely if it isn't
    needed.  It's good for about 5% speedup on a multi-threaded workload
    with no WAL.
    
    This diff also adds clarifying comments about the chance for partial
    failure of WriteBatchInternal::InsertInto, and always sets bg_error_ if
    the memtable state diverges from the logged state or if a WriteBatch
    succeeds only partially.
    
    Benchmark for speedup:
      db_bench -benchmarks=fillrandom -threads=16 -batch_size=1 -memtablerep=skip_list -value_size=0 --num=200000 -level0_slowdown_writes_trigger=9999 -level0_stop_writes_trigger=9999 -disable_auto_compactions --max_write_buffer_number=8 -max_background_flushes=8 --disable_wal --write_buffer_size=160000000
    
    Test Plan: asserts + make check
    
    Reviewers: sdong, igor
    
    Reviewed By: igor
    
    Subscribers: dhruba
    
    Differential Revision: https://reviews.facebook.net/D50583
    6ce42dd0
db_impl.cc 184.8 KB