关于auto_analyze用处的疑问?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】: 5.7.25-TiDB-v4.0.0
  • 【问题描述】:auto_analyze默认开启,其实想问下auto_analyze的主要用处有哪些?是否修改相关参数,避免频繁更新,比如避免读写高峰做auto_analyze等?是否有些经验可以分享

analyze table 为收集表统计信息的方法,统计信息影响着 sql 执行计划的最优解。如果统计信息缺失或者统计信息更新很滞后,可能会出现改用到索引的地方却走了 table full scan。

关于 auto analyze 在文档中有一些说明,

收集时间控制:
tidb_auto_analyze_start_timetidb_auto_analyze_end_time 控制统计信息收集的时间区间,避开业务高峰。

收集粒度控制:
tidb_auto_analyze_ratio 当表中出现 50% 的数据变更才会进行统计信息收集。

并发控制:
tidb_build_stats_concurrency 控制 analyze 线程下小任务的并发数
tidb_distsql_scan_concurrency 处理任务单次读取 region 的数据量
tidb_index_serial_scan_concurrency 处理索引任务单次读取 region 的数据量

以下链接 search [自动更新]
https://docs.pingcap.com/zh/tidb/stable/statistics#查看-analyze-状态