【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】7.5.0
【遇到的问题:问题现象及影响】
慢查询里面看到的关于分区表的很慢的analyze语句,这个表是分区表,
这种分析语句是分析什么的?为什么会这么慢?
该表看了下数据量不多几千条,但是分区数量测试自动化脚本搞出来1000个分区
ANALYZE TABLE test_vegas2
.win_ticket
PARTITION p366752
INDEX PRIMARY
;
【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】7.5.0
【遇到的问题:问题现象及影响】
慢查询里面看到的关于分区表的很慢的analyze语句,这个表是分区表,
这种分析语句是分析什么的?为什么会这么慢?
该表看了下数据量不多几千条,但是分区数量测试自动化脚本搞出来1000个分区
ANALYZE TABLE test_vegas2
.win_ticket
PARTITION p366752
INDEX PRIMARY
;
看下mysql.analyze_jobs表中数据
手动发起的,还是自动调度触发的?
自动的
看起来应该是merge global比较慢,你观察下,是不是收集每个分区后都要merge global啊
有可能是这一步慢
对于分区表来说,分区越多越慢,对于数据库来说每个分区相当于一个表,也就是说,1000多个分区相当于分析了1000多张表
和数据量感觉关系不大,分区多了就慢
数据量越大肯定analyze越慢,数据多了采样的数据就多,分析起来消耗资源就多。
当然分区数也是有影响,尤其是少量数据的分区,相关性会更大。
建议把这个分区表改成普通表。
要将分区表 win_ticket
转换为非分区表,可以执行以下语句:
ALTER TABLE win_ticket REMOVE PARTITIONING
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。