请问下老师们,我认为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 天后被自动关闭。不再允许新回复。