自动收集统计信息开关 run-auto-analyze 参数默认是 true 开启。
1、表统计信息自动收集需要同时满足以下条件:
- 表中至少 1000 行数据
- 表从未被 analyze 过,至少在默认 1 分钟(20*statsLease)内无 DML 操作
- 如果表被 analyze 过,那么当累计到足够的修改,即当某个表的修改行数与总行数的比值(modify_count/row_count)大于 tidb_auto_analyze_ratio,并且当前时间在 tidb_auto_analyze_start_time 和 tidb_auto_analyze_end_time 之间时,后台会自动执行 analyze 语句
2、索引统计信息的自动收集需要同时满足以下条件:
- 表中至少 1000 行数据
- 新增索引从未被 analyze 过
- 同表的自动收集触发条件,自动 analyze 也会收集索引列的统计信息
3、相关参数
- tidb_auto_analyze_ratio,默认值 0.5。
- tidb_auto_analyze_start_time 和 tidb_auto_analyze_end_time,默认值分别为 00:00 和 23:59,建议设置为业务低峰期时间,另外,默认为 UTC 时间,如果需要修改可以使用 set 命令进行设置。
更详细的信息请见官方文档:
https://docs.pingcap.com/zh/tidb/stable/statistics/#统计信息简介