[FAQ] 统计信息自动更新时间范围不生效

[问题澄清]
当需要控制统计信息自动更新的时间范围时,会设置以下参数,但是参数不生效。在时间范围外也有analyze table 发生。
https://docs.pingcap.com/zh/tidb/stable/statistics#自动更新

通常可以查看 dashboard 发现 analyze table 的时间

[问题分析]

  1. 查看系统变量:
    show variables like ‘%tidb_auto_analyze%’;
    image
  2. 查看timezone变量信息:
    SELECT @@global.time_zone, @@session.time_zone;
  3. 查看 date 和 localtime 信息
    date
    ls -l /etc/localtime
  4. 查看 analyze table 对应的 tidb.log 日志
    [2021/03/04 10:02:59.724 +08:00] [INFO] [update.go:772] ["[stats] auto analyze triggered"] [sql=“analyze table xxx.xxxxxxx”] [reason=“table unanalyzed, time since last updated 2h11m53.176891991ss”]

[原因说明]

  1. start time 和 end time 没有设定时区,导致时区不匹配
  2. 查看是否人工执行
  3. 如果新表之前从来没有 analyze 过,那么会自动更新,不限制时间,会全量更新
    https://github.com/pingcap/tidb/blob/3d4def7eeff3a7af8df2efe2a1b36c48e3cf660f/statistics/handle/update.go

[参考案例]