一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】生产环境
【TiDB 版本】v7.1.3
【部署方式】机器部署
【操作系统/CPU 架构/芯片详情】centos7
【机器部署详情】32/128G/4T
【集群数据量】30T
【集群节点数】
【问题复现路径】几张大表,数据量在20-30亿级别,最近清理掉一半的数据
【遇到的问题:问题现象及影响】
数据清理完之后,过了大概一周发现这些表的数据查询超时,查询方法为不加任何条件: select * from TB1 limit 1
查看执行计划发现是全表扫描, 所以执行时间非常长, 请问要如何解决?
已经对表手动分析过,健康度100
手动compact好像针对tiflash的,我这边暂时未用tiflash
菩提老祖
(菩提老祖)
4
删了数据,这是做了标记。数据并未删除。等待gc周期。
region大小问题,未及时合并。即便手工analyze,仍可能误判执行计划。如果等不及 可试下 索引提示(Index Hint) 规避。
数据删除已超过一周,GC时间是3个小时,你这里说的GC是自动compression吗?
克里克里克
(Ti D Ber H052ej9m)
9
explain analyze实际看一下,扫描了多少key。确定gc是否已经执行。
随缘天空
(Ti D Ber Ivw R7o Pj)
11
感觉应该是region未合并造成的,可以执行命令查看下目前表的region数,或者到监控面板查看是否有大量的empty-region
SELECT COUNT(*) FROM information_schema.tidb_regions WHERE table_name = ‘TB1’;
1 个赞
克里克里克
(Ti D Ber H052ej9m)
13
参照这个吧。
博客 - MVCC导致limit 1执行慢测试 | TiDB 社区
cop_num也多,可能空region比较多?批量删除数据后,region没有merge?
1 个赞
Amy_Jing
(Amypingcap)
16
30TB 级别用 DELETE 清理大量数据本身就是高风险操作。建议后续改为按时间范围分区 + DROP PARTITION——分区删除是 DDL 操作,直接物理清理,不产生 MVCC tombstone,不会出现这个问题。另外提一句,30TB 集群这种规模,GC/Compaction/Region 健康度的监控靠手工 SHOW 命令确实吃力。平凯数据库企业版的 TEM 运维平台内置了 GC 推进监控、Region 空洞检测、Compaction 积压告警这类面板——类似问题在 Grafana 上几分钟就能定位,不用一个个命令排查。有需要可以了解一下。