tidb 5.1.0设置自动analyze的时间不起效果

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决: 【 TiDB 使用环境】生产

【概述】 tidb 5.1.0设置自动analyze的时间不起效果,如下所示:

mysql> show variables like ‘%analyze%’; ±-----------------------------±------------+ | Variable_name | Value | ±-----------------------------±------------+ | tidb_analyze_version | 2 | | tidb_auto_analyze_end_time | 23:59 +0000 | | tidb_auto_analyze_ratio | 0.5 | | tidb_auto_analyze_start_time | 10:30 +0000 | | tidb_enable_fast_analyze | OFF | ±-----------------------------±------------+ 5 rows in set (0.01 sec) 但是查看mysql> SHOW ANALYZE STATUS\G Table_schema: bidata Table_name: dws_111111 Partition_name: Job_info: auto analyze table Processed_rows: 1281117 Start_time: 2022-07-24 07:50:17 End_time: 2022-07-24 07:51:11 State: finished 发现有凌晨10.30之前执行的,我这样设置后,不应该只能在10.30–23:59这段时间可以执行吗??? 问题2:auto analyze table的机制是 如果你设置了可以自动执行的时间范围,当你更新某个表的数据比例超过tidb_auto_analyze_ratio,那么如果此时不在这个时间范围内,他先不自动analyze table,放到队列里面,等到到了10.30–23:59这段时间范围内,再读取队列里面的信息进行auto analyze table?还是说他不在该时间范围就放弃执行auto analyze table,直接给舍弃了呢?

【背景】 做过哪些操作

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

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】

【应用软件及版本】

【附件】 相关日志及配置信息

  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息

监控(https://metricstool.pingcap.com/)

  • TiDB-Overview Grafana监控
  • TiDB Grafana 监控
  • TiKV Grafana 监控
  • PD Grafana 监控
  • 对应模块日志(包含问题前后 1 小时日志)

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

改为 23:59 +0800,start/end参数是启动auto analyze任务时间范围,tidb会周期性的检查哪些表满足分析条件,并判断当前时间是否在时间范围内,如果在则启动分析任务。

1 个赞

如果修复时间太长了就会放弃 你手工指定就行

自动跟新统计信息根据表的modify比例

问题1:时区问题,参考一楼设置为
SET GLOBAL tidb_auto_analyze_end_time=‘23:59 +0800’;

问题2:首先表的修改行数等信息储存在元信息表中,通过SHOW STATS_META可以查看。定义的自动更新时间范围内会查询表元信息,根据表元信息中存储的修改行数等信息判断是否进行自动收集统计信息。所以如果修改不在范围,不会触发自动更新,当在时间范围内,会触发自动更新,不会舍弃。

(引用原文)当某个表 tbl 的修改行数与总行数的比值大于 tidb_auto_analyze_ratio ,并且当前时间在 tidb_auto_analyze_start_timetidb_auto_analyze_end_time 之间时,TiDB 会在后台执行 ANALYZE TABLE tbl 语句自动更新这个表的统计信息。

1 个赞

非常感谢

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。