表的自动analyze不触发

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】7.5
【复现路径】做过哪些操作出现的问题
昨天导入一些数据,然后看了下sql执行计划不对,再看了下表的健康度好多0的,为什么没有自动分析呢

触发策略:如果一张新表达到 1000 条记录,并且在 1 分钟内没有写入,会自动触发。

https://docs.pingcap.com/zh/tidb/stable/sql-faq#在-tidb-中-auto-analyze-的触发策略是怎样的

2 个赞

要是导数进去的,可能还没分析到,分析哪有那么快

数据变化较小

SPL也先看一眼行不,健康度都0了还变化小

这里面有些表数据都是上万了,空库导入,昨天导入的

昨天导入的,今天看的,已经很久了

tidb_enable_auto_analyze 参数打开了吗?
是不是tidb_auto_analyze_ratio没达到。

看下自动收集相关参数,参考: https://docs.pingcap.com/zh/tidb/stable/statistics#自动更新
再看下自动收集任务执行情况,查询mysql.analyze_jobs 正在执行的统计信息收集任务以及过去 7 天内的历史任务记录

1 个赞

参数是开的, 7.5默认安装

手动分析能成功吗?

image

可以,刚才都成功分析了

开了
image

能不能找张可以写数据的小表,再写一倍的数据进去,看看能不能触发。

看了下,自动分析应该在运行,但是由于是分区表单个分区运行很慢造成的,手工分析快很多,这是自动分析的:

这是早上手动分析的:

这张大的分区表也是手动分析的?

是手工分析的,看了下日志,自动分析非常慢,一个一个分区分析的,手工快很多

嗯,大量迁移数据还是手工分析下比较好,自动的默认并发低,比较慢,目的是减少对线上的影响

1 个赞

通过什么方式导入的呢?比如br还原就需要手工analyze一下。

1 个赞