为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【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_time
和 tidb_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-状态