TRUNCATE TABLE ,空表,为什么需要4S啊

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】TRUNCATE TABLE ,空表,为什么需要4S啊
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

影响的时间的因素挺多的,自身执行原理、资源使用、mdl锁。你的这个场景大概率 regions 太多了:show table <table_name> regions;

1 个赞

truncate table 是ddl语句,执行时间和数据量无关。truncate实际上是要创建一个新表并删了旧表。
tidb有mdl锁,执行ddl语句还有队列不能并发对表的操作,慢可能是正常的,需要排查下当时有没有其他ddl或者有mdl锁

1 个赞

只有一个regioins,

这是 truncate 之后看的?truncate 之后的region 数是按表定义来创建的。需要 truncate 之前看

DDL执行排队了

没有排队的情况,刚执行的时候看了s

没有数据

表多大啊,是不是类似mysql 大表,涉及到region 很多,磁盘io慢

没有数据,空表

truncate实际上是drop/create操作,ddl需要进队列,owner单线程执行

看了半天,的确是很困惑的问题。

表的健康度如何,统计信息是否准确

空表做TRUNCATE TABLE ,这个是什么逻辑

变成空表前是不是个大表

没显示慢在哪一步呢

库里总共有多少个表呢

具体是什么版本,高版本可能是元数据锁导致

一个空表,truncate table操作,


搞一种锁等待的情况就可以复现。
如果没有其他什么操作 0.2s就执行完了。

资源够吗