Skip to content

What's new in RocksDB2.7

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

Public API changes

  • 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.
  • Renamed WriteBatch::Data() const std::string& Data() const.
  • Renamed class TableStats to TableProperties.
  • Deleted class PrefixHashRepFactory. Please use NewHashSkipListRepFactory() instead.
  • Supported multi-threaded EnableFileDeletions() and DisableFileDeletions() - b60c14f
  • Added DB::GetOptions() - 3ce3658
  • Added DB::GetDbIdentity() - 1880268
  • DB::CompactRange() now returns a status aba2acb

New features

  • Added BackupableDB
  • Implemented TailingIterator, a special type of iterator that doesn't create a snapshot (can be used to read newly inserted data) and is optimized for doing sequential reads.
  • Added property block for table, which allows (1) a table to store its metadata and (2) end user to collect and store properties they are interested in.
  • Enabled caching index and filter block in block cache (turned off by default).
  • Supported error report when doing manual compaction.
  • Supported additional Linux platform flavors and Mac OS.
  • Put with SliceParts - Variant of Put() that gathers output like writev(2) -- 8a46ecd
  • Bug fixes and code refactor for compatibility with upcoming Column Family feature.

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