获取analyze table 的执行逻辑

【 TiDB 使用环境】测试
【 TiDB 版本】TiDB 4.0.9
【复现路径】表一共338行,analyze table sbtest_338;
【遇到的问题:问题现象及影响】


官网上有提到:https://docs.pingcap.com/zh/tidb/v4.0/statistics 但无法理解它具体的执行逻辑。

在 TiDB 中执行 ANALYZE TABLE 语句比在 MySQL 或 InnoDB 中耗时更长。InnoDB 采样的只是少量页面,但 TiDB 会完全重构一系列统计信息。适用于 MySQL 的脚本会误以为执行 ANALYZE TABLE 耗时较短。

想知道TiDB中 analyze table 大概的执行逻辑&流程,未找到相关资料
【资源配置】
该与资源无关
【附件:截图/日志/监控】

问题的起因是,线上一个338行记录的表,analyze table 竟然需要22分钟。 tidb_enable_fast_analyze 已经开启,该表无大量变更。
所以借此机会了解它的执行过程。

1、有同时执行多个 analyze table
2、服务器当时的资源信息
图片


可以看看这里
https://docs.pingcap.com/zh/tidb/stable/statistics#统计信息的收集

https://docs.pingcap.com/zh/tidb/stable/sql-statement-analyze-table

这个绝对不正常,你新建一张一模一样的表,灌进去338条数据,手工analyze下,看看时间,看看是表的问题,还是analyze的问题

确实不正常,但是不知道它的执行逻辑,不知道咋排查。

你新建一张一模一样的表,灌进去338条数据,手工analyze下,看看时间,看看是表的问题,还是analyze的问题

自己手动,在4.0.9大概也就2miao多。虽然也比较长。

这里只是强调 TiDB与mysql执行analyze table不同,但是并没有给出执行逻辑。

无法去做分析慢的原因。

这个专栏文章呢?

https://asktug.com/t/topic/37691

它告诉我的是:
糟糕!该页面不存在或者是一个不公开页面。

这个链接呢?专栏 - TiDB统计信息原理简介与实践 | TiDB 社区

下面这两个是专栏里的链接

我也看过了。。。

:thinking:在进一步就真的是看源码了

不会真从入门到放弃吧。 :upside_down_face:

要不要删库跑路啊 :grinning:

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