数据表,平时跑一些任务 ,现在没有数据,select * from 表 要5秒多 ,查下原因

今天再次做了整理 ,瞬间变快了 ,还是不清楚原因 ,如果后期遇到此类问题还是不清楚从哪里入手

1 个赞

你在看下执行计划的total_keys量

1 个赞

楼上说的对,主要看执行计划

1 个赞

这种看执行计划貌似不好排查

1 个赞

这个表是不是经常大量加载和删除数据,只是现在表中没有数据?如果是这样的话,就存在伪删除的情况,TiDB需要便利整个表的store,所以时间很长。

耗时都在Coprocessor上,可以参照这部分排查 一般是tikv的cpu被占满了。 有些开发写的sql会占用tikv的cpu。

学习了学习了~
仔细看了下,GC 的机制就是这样,旧版本key的删除是需要等gc运作的时候才会删,所以可能他表中这么多的keys 都是历史待清理的key。 后来他第二次analyze 的时候,估计这些key已经被清理掉了,所以快了。

像这种问题,都可以先从执行计划开始看起。使用explain analyze可以看到真实的扫描keys数量,每一步的用时,使用算子情况等。然后看具体慢在哪一步上。这样就有针对性的解决问题了。

表被truncate后,analyze后,select还会扫描未来得及被GC的key吗?

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。