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:
rocksdb instance that stores most TiKV data
raftdb that stores Raft logs and has a single column family called
rocksdb instance has three column families:
|Stores actual KV pairs for TiKV|
|Stores commit information in the MVCC model|
RocksDB can be configured on a per-column-family basis. Here’s an example:
max-background-jobs = 8
RocksDB configuration options
|The maximum number of concurrent background jobs (compactions and flushes)||8|