TiDB MVCC 问题处理
作者: WalterWj 原文来源:https://tidb.net/blog/7a77b926
背景
TiDB 在应对 delete 和 update 产生的 mvcc 数据,compact 触发概率一般比较低,导致空间释放慢,甚至一些 SQL 由于 mvcc 原因导致查询慢,因此在比较低版本可以用一下方法来解决。
按照 Region 查找与压缩操作
查找指定表在特定 TiKV 节点上的 Region
要查询与test.sbtest2
表关联的 Region ID(仅限表数据,非索引数据),并且确定该 Region 的副本位于指定 TiKV 节点(172.16.201.18:20160
)上,请使用以下 SQL 查询:
这个查询返回与表test.sbtest2
关联的第一个 Region ID,这个 Region 的副本位于172.16.201.18:20160
地址的 TiKV 节点上。
按照 Region ID 进行 Compact 操作
在获取到 Region ID 之后(例如,假设 Region ID 为 98),你可以使用 TiUP 的 ctl 工具对该 Region 进行 Compact 操作,以此来减少空间占用和提高读写性能。以下是按照 Region ID 进行 Compact 操作的步骤:
首先,检查 Region 的属性以确认是否需要执行 Compact:
使用 Compact 命令来压缩 write CF(Column Family):
同样的,对 default CF 进行 Compact 操作:
再次检查 Region 的属性以确认 Compact 操作之后删除键的数量:
通过以上步骤,你可以对 TiKV 中的指定 Region 进行 Compact 操作,优化数据存储结构。
请注意,版本号(如 v6.5.8)和 TiKV 节点的地址(如172.16.201.18:20160
)需要根据实际环境进行更改。务必保证使用与集群版本对应的 ctl 工具版本,以避免不兼容的问题。
这个方法影响最小,但是操作最复杂,如果表比较大,region 数量较多的情况下非常麻烦,推荐脚本化处理
TiKV 按照表手动 Compaction 操作指南
在执行 compaction 之前和之后,需要记录表的行数,以便验证 compaction 的效果。以下是详细步骤:
步骤 1:验证 Compaction 效果
在执行 compaction 前后,运行以下 SQL 语句并保存结果:
将 table_name
替换为待 compaction 的表名。
步骤 2:执行手动 Compaction
2.1 查询表的最小和最大 Key
执行 SQL 查询以获取表的最小和最大 Key:
将 db_name
和 table_name
替换为数据库名和表名。
2.2 转换 Key 为 Escaped 格式
使用 tikv-ctl
将获取到的最小和最大 Key 转换为 escaped 格式:
替换 start_key
和 end_key
为上一步骤查询到的实际值。
例如,假设转换后的 start_key 和 end_key 为:r\000\000\001\000\000\000\000\373
和 t\200\000\000\000\000\000\000\377[\000\000\000\000\000\000\000\370
,在 compaction 时,需要在 key 前面加上字符 z
。
2.3 执行 Compaction
Compact Write CF
如果 Write CF Compaction 无效,尝试 Compact Default CF
将 IP:port
替换为目标 TiKV 节点的实际 IP 地址和端口号。
通过以上步骤,可以对指定的表进行手动 compaction 操作。
确保在执行这些步骤时,替换示例中的 table_name
、db_name
、start_key
、end_key
以及 IP:port
等占位符为你实际环境中的具体值。
这个方法相对简单,但是影响也不小,推荐业务低峰期做。
其他方法
cluster compact 和 compact 实例相对来说操作简单,但是影响最大:
新版本优化
region-compact-min-redundant-rows
从 v7.1.0 版本开始引入
触发 RocksDB compaction 需要的冗余的 MVCC 数据行数。
默认值:
50000
最小值:
0
region-compact-redundant-rows-percent
从 v7.1.0 版本开始引入
触发 RocksDB compaction 需要的冗余的 MVCC 数据行所占比例。
默认值:
20
最小值:
1
最大值:
100
可以考虑临时调小,调大 compact 触发概率,推荐业务低峰做
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/9341f30566790057208c5393b】。文章转载请联系作者。
评论