[转帖]TiDB的tikv节点的压缩算法
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:57
简介:TiDB的tikv节点实用的RocksDB,RocksDB的默认压缩算法为:[no:no:lz4:lz4:lz4:zstd:zstd]
RocksDB 每一层数据的压缩方式,可选的值为:no,snappy,zlib,bzip2,lz4,lz4hc,zstd。
RocksDB6层的压缩为:[no:no:lz4:lz4:lz4:zstd:zstd]
表示 level0 和 level1 不压缩;
level2 到 level4 采用 lz4 压缩算法;
level5 和 level6 采用 zstd 压缩算法。
no 表示没有压缩,lz4 是速度和压缩比较为中庸的压缩算法,zlib 的压缩比很高,对存储空间比较友好,但是压缩速度比较慢,压缩的时候需要占用较多的 CPU 资源。
不同的机器需要根据 CPU 以及 I/O 资源情况来配置怎样的压缩方式。
例如:如果采用的压缩方式为"no:no:lz4:lz4:lz4:zstd:zstd",在大量写入数据的情况下(导数据),发现系统的 I/O 压力很大(使用 iostat 发现 %util 持续 100% 或者使用 top 命令发现 iowait 特别多),而 CPU 的资源还比较充裕,这个时候可以考虑将 level0 和 level1 开启压缩,用 CPU 资源换取 I/O 资源。
如果采用的压缩方式为"no:no:lz4:lz4:lz4:zstd:zstd",在大量写入数据的情况下,发现系统的 I/O 压力不大,但是 CPU 资源已经吃光了,top -H 发现有大量的 bg 开头的线程(RocksDB 的 compaction 线程)在运行,这 个时候可以考虑用 I/O 资源换取 CPU 资源,将压缩方式改成"no:no:no:lz4:lz4:zstd:zstd"。
总之,目的是为了最大限度地利用系统的现有资源,使 TiKV 的性能在现有的资源情况下充分发挥。 compression-per-level = ["no", "no", "lz4", "lz4", "lz4", "zstd", "zstd"]
相关文章
-
[转帖]TiFlash 面向编译器的自动向量化加速
[转帖]TiFlash 面向编译器的自动向量化加速
- 互联网
- 2026年04月04日
-
[转帖]Unicode标准中定义的3个私有使用区域
[转帖]Unicode标准中定义的3个私有使用区域
- 互联网
- 2026年04月04日
-
[转帖]查看oracle中表的索引
[转帖]查看oracle中表的索引
- 互联网
- 2026年04月04日
-
[转帖]The Lambda Calculus for Absolute Dummies (like myself)
[转帖]The Lambda Calculus for Absolute Dummies (like myself)
- 互联网
- 2026年04月04日
-
[转帖]Tail Latency学习
[转帖]Tail Latency学习
- 互联网
- 2026年04月04日
-
[转帖]SQL Server数据库重建索引、更新统计信息
[转帖]SQL Server数据库重建索引、更新统计信息
- 互联网
- 2026年04月04日






