Skip to content

What's new in RocksDB2.7

Igor Canadi edited this page Jan 29, 2014 · 16 revisions

Public API changes

  • Removed PrefixHashRepFactory memtable factory. Please use NewHashSkipListRepFactory instead.
  • Renamed StackableDB::GetRawDB() to StackableDB::GetBaseDB(). The call returns the underlying DB* for a given StackableDB. Before, GetRawDB() returned the raw DB* by stripping away all StackableDB layers.
  • Support multi-threaded EnableFileDeletions() and DisableFileDeletions() - b60c14f
  • Added DB::GetOptions() - 3ce3658
  • Added DB::GetDbIdentity() - 1880268](https://github.com/facebook/rocksdb/commit/18802689b8081c4eaa9b477cf8fe1abddc887a3e)

New features

  • Tailing iterator - wiki page
  • Implemented BackupableDB - wiki page
  • Cache index and filter block in block cache - turned off by default
  • Put with SliceParts - Variant of Put() that gathers output like writev(2) -- 8a46ecd

Performance improvements

  • Huge benchmark performance improvements by multiple efforts. For example, increase in readonly QPS from about 530k in 2.6 release to 1.1 million in 2.7 [1]
  • Speeding up a way RocksDB deleted obsolete files - no longer listing the whole directory under a lock -- decrease in p99
  • Use raw pointer instead of shared pointer for statistics: 5b825d -- huge increase in performance -- shared pointers are slow
  • Optimized locking for get -- 1fdb3f -- 1.5x QPS increase for some workloads
  • Cache speedup - e8d40c3
  • Implemented autovector, which allocates first N elements on stack. Most of vectors in RocksDB are small. Also, we never want to allocate heap objects while holding a mutex. -- c01676e4
  • Lots of efforts to move malloc, memcpy and IO outside of locks

[1] You can see the exact parameters in rocksdb/build_tools/regression_build_test.sh

Contents

Clone this wiki locally