tidb 收集表统计信息是全量收集嘛

请问下老师们,我认为tidb 后台自动执行收集表的统计信息时( 后台自动执行 analyze table 语句) 和手动执行analyze table 语句时,默认行为都是全量收集表的统计信息吧?

都是收集全量的。但是收集的速度不一样,手动执行可以设置并行度,自动收集没办法设置

默认全量。
参考:https://docs.pingcap.com/zh/tidb/v5.3/statistics

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

如需更快的分析速度,可将 tidb_enable_fast_analyze 设置为 1 来打开快速分析功能。该参数的默认值为 0

快速分析功能开启后,TiDB 会随机采样约 10000 行的数据来构建统计信息。因此在数据分布不均匀或者数据量比较少的情况下,统计信息的准确度会比较差。可能导致执行计划不优,比如选错索引。如果可以接受普通 ANALYZE 语句的执行时间,则推荐关闭快速分析功能。

tidb_enable_fast_analyze 为实验性功能,目前与 tidb_analyze_version=2 的统计信息不完全匹配。因此开启 tidb_enable_fast_analyze 时需要将 tidb_analyze_version 的值设置为 1

好的,谢谢

多谢 大佬 回复

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