统计信息一直不更新

【TiDB 版本】 v4.0.11

【问题描述】

统计信息一直不更新,可以看到rows为0的,但是data_length有数据。

通过count() 都是有数据的,但是统计信息都没有更新。
【隐藏】

都通过排查日志,发现0点-6点没有触发统计信息更新的日志:
image

image

tidb_auto_analyze_end_time
tidb_auto_analyze_ratio
我也不知道这两个参数什么时候修改的,可能是我接手之前。

整个实例 的自动更新统计信息都失效了。具体失效时间不太清楚日志只保留了几天的。

统计信息的自动收集需要满足一定的条件才能触发,麻烦先检查下是否满足下面这些条件:

都满足上面这些条件的。目前预计至少1个月以上都没有自动更新统计信息了。

配置:
“stats-lease”: “3s”

SHOW STATS_META WHERE modify_count-ROW_COUNT>0 AND ROW_COUNT>1000
表中变更的总行数大于当前行数统计
【隐藏】

目前修改了参数还是没有效果:
image

系统时区:
image

配置文件里的这个配置开启了么?

注意:

只有在 TiDB 的启动配置文件中开启了 run-auto-analyze 选项,该 TiDB 才会触发 auto_analyze

“run-auto-analyze”: true

开启了

是原来就开启,还是后来修改的?如果后来修改的需要reload

一直开启的,没有动过。

执行这个,有返回结果么?
SHOW STATS_HEALTHY WHERE healthy BETWEEN 1 AND 50;

【隐藏】

生产环境么?不是生产环境建议reload一下看看

修改配置参数
执行 reload 命令滚动分发配置、重启相应组件:

tiup cluster reload ${cluster-name} [-N <nodes>] [-R <roles>]

是生产环境
通过命令获取的配置是为true的。
curl -G http://172.16.71.22:10080/debug/zip?seconds=30 > profile.zip

profile.zip (5.1 MB)

你参考一下,看看是不是哪里没有配置对。

1.可以从 tidb.log 中搜索下,看下有无关键字 auto analyze triggered;
2.如果线上允许的话,可以临时新建一张表,插入超过 1000 条记录,观察下统计信息自动收集是否会被触发。

  1. 日志没有触发的这个关键字
  2. 线上昨天业务新建表并且写入的数据超过1000条也没有触发

昨天晚上刚上线的表实时数据变化频繁吗?如果每分钟内都有数据写入那可能不满足触发自动统计信息收集的条件,可以先通过 show table status 看下。

手工能analyze一张表么?有没有一种可能是analyze报错

可以手动analyze的

  1. 几个 tidb-sever? tiup cluster display 看下
  2. 麻烦 show config 看下每个节点的analyze 参数是否配置一致,auto 参数是否都是 true

  1. show config 配置都是一样的。
    “stats-lease”: “3s”
    “run-auto-analyze”: true

目前所有的表都不更新吗? 所有表都不断的有DML操作吗?

是的,所有表都不自动更新统计信息了

生产环境一直在进数据。