[问题澄清]
当需要控制统计信息自动更新的时间范围时,会设置以下参数,但是参数不生效。在时间范围外也有analyze table 发生。
https://docs.pingcap.com/zh/tidb/stable/statistics#自动更新
通常可以查看 dashboard 发现 analyze table 的时间
[问题分析]
- 查看系统变量:
show variables like ‘%tidb_auto_analyze%’;
- 查看timezone变量信息:
SELECT @@global.time_zone, @@session.time_zone;
- 查看 date 和 localtime 信息
date
ls -l /etc/localtime
- 查看 analyze table 对应的 tidb.log 日志
[2021/03/04 10:02:59.724 +08:00] [INFO] [update.go:772] [“[stats] auto analyze triggered”] [sql=“analyze tablexxx
.xxxxxxx
”] [reason=“table unanalyzed, time since last updated 2h11m53.176891991ss”]
[原因说明]
- start time 和 end time 没有设定时区,导致时区不匹配
- 查看是否人工执行
- 如果新表之前从来没有 analyze 过,那么会自动更新,不限制时间,会全量更新
https://github.com/pingcap/tidb/blob/3d4def7eeff3a7af8df2efe2a1b36c48e3cf660f/statistics/handle/update.go
[参考案例]
https://asktug.com/t/topic/63417
https://asktug.com/t/topic/68523