TiKV 内存参数性能调优
本文档用于描述如何根据机器配置情况来调整 TiKV 的参数,使 TiKV 的性能达到最优。
TiKV 最底层使用的是 RocksDB 做为持久化存储,所以 TiKV 的很多性能相关的参数都是与 RocksDB 相关的。TiKV 使用了两个 RocksDB 实例,默认 RocksDB 实例存储 KV 数据,Raft RocksDB 实例(简称 RaftDB)存储 Raft 数据。
默认 RocksDB 实例将 KV 数据存储在内部的
default
、write
和lock
3 个 CF 内。write
CF 存储的是数据的版本信息 (MVCC) 以及索引相关的数据,相关的参数位于[rocksdb.writecf]
项中;- CF 存储的是锁信息,系统使用默认参数。
Raft RocksDB 实例存储 Raft log。
default
CF 主要存储的是 Raft log,与其对应的参数位于[raftdb.defaultcf]
项中。
除了以上列出的 block-cache
以及 write-buffer
会占用系统内存外:
- TiKV 在处理大的查询的时候(例如
select * from ...
)会读取数据然后在内存中生成对应的数据结构返回给 TiDB,这个过程中 TiKV 会占用一部分内存
- 生产环境中,不建议将 TiKV 部署在 CPU 核数小于 8 或内存低于 32GB 的机器上
- 如果对写入吞吐要求比较高,建议使用吞吐能力比较好的磁盘
- 如果对读写的延迟要求非常高,建议使用 IOPS 比较高的 SSD 盘