We are currently refactoring our documentation. Please excuse any problems you may find and report them here.

TiKV uses RocksDB as its underlying storage engine for storing both Raft logs and KV (key-value) pairs.

RocksDB was chosen for TiKV because it provides a highly customizable persistent key-value store that can be tuned to run in a variety of production environments, including pure memory, Flash, hard disks, or HDFS, it supports various compression algorithms, and it provides solid tools for production support and debugging.

TiKV creates two RocksDB instances on each Node:

  • A rocksdb instance that stores most TiKV data
  • A raftdb that stores Raft logs and has a single column family called raftdb.defaultcf

The rocksdb instance has three column families:

Column familyPurpose
rocksdb.defaultcfStores actual KV pairs for TiKV
rocksdb.writecfStores commit information in the MVCC model

RocksDB can be configured on a per-column-family basis. Here’s an example:

  1. [rocksdb]
  2. max-background-jobs = 8

RocksDB configuration options

NameDescriptionDefault
max-background-jobsThe maximum number of concurrent background jobs (compactions and flushes)8