统计更新时间设置

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【概述】
tidb自动统计更新的时间,能设定天的级别吗?比如每周六日晚上定时做统计更新。

tidb_auto_analyze_end_time

tidb_auto_analyze_start_time

【背景】做过哪些操作

【现象】业务和数据库现象

【业务影响】

【TiDB 版本】

【附件】

  1. TiUP Cluster Display 信息

  2. TiUP Cluster Edit Config 信息

  3. TiDB- Overview 监控

  • 对应模块日志(包含问题前后1小时日志)

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

时间范围好像没办法支持到这个级别,这个只能支持到每天的某个时间范围内…残念…

可以当需求,,提一下~ :nerd_face:

2 个赞

楼上说的对,目前确实还不支持。 可以自己挂定时作业进行触发。

1 个赞

那我怎么关闭这个自动统计更新呢?貌似没有找到相关的参数。

1 个赞

需要修改配置文件参数
https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file#run-auto-analyze

1 个赞

查看表的统计更新信息


里面的update_time表示的是这个表做统计更新的时间吗?

如果是的话,为啥我设置的统计更新时间是晚上21点到早上6点,但是我看表的UPDATE_TIME有今天早上9点的呢?

1 个赞

默认是没有设置时区的,需要设置时区。21点到6点,对应的就是5点到14点。

  • tidb_auto_analyze_start_time='21:00 +0800'
  • tidb_auto_analyze_end_time='06:00 +0800'
1 个赞

我配置的是:

  • tidb_auto_analyze_start_time='13:00 +0000'
  • tidb_auto_analyze_end_time='22:00 +0000'
    这个没错吧?

没错。刚重新看了一下,是我理解错了。那个更新时间是更新的状态,不是自动收集统计信息的时间。在数据发生变化的时候,就会更新update_time。

注意:

在 TiDB 根据 DML 语句自动更新总行数以及修改的行数时, update_time 也会被更新,因此并不能认为 update_time 是最近一次发生 Analyze 的时间。

但是我对一个表进行analyze table table-name以后,这个UPDATE_TIME就会发生变化呀。

这个表是自己的一个测试表。

是会发生变化,但引起变化的原因,不只是analyze,正常的UPDATE语句也会更新update_time。
所以官方文档中说: 并不能认为 update_time 是最近一次发生 Analyze 的时间。

哦,你的意思是对表执行analyze操作,也会引起update_time的变化,是吧?

是的,因为重新收集统计信息了

明白了。多谢!

:handshake::handshake::handshake:

感觉还是有点可疑,我查看系统表 ANALYZE_STATUS,发现表的统计更新时间就是今天早上9点多。
所以那两个控制统计更新开始和结束时间的参数,填写的时间是UTC时间呢还是北京时间呢?

刚才你不是手工执行过一次么?

我看到的还有其他表。那些表我没有做过操作。

建议还是填写北京时间。
不排除人工执行的可能性,可以再持续观察一段时间

我再试一试