[FAQ] TiDB 的统计信息自动收集的策略

自动收集统计信息开关 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 命令进行设置。

更详细的信息请见官方文档:

1赞