自动analyze如何配置比较科学?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:3.0.8
  • 【问题描述】:看了下文档里面关于自动analyze的说明,因为我们的数据是从mysql迁移过来的,所以统计数据达不到默认的tidb_auto_analyze_ratio=0.5的阀值,所以一直没有自动更新过,想问下现在要实现是否只能是使用定时任务来触发?或者是调整阀值来做,但是感觉两种办法都有个问题:
  1. 定时任务就是后续有表就要人工去增加任务
  2. 调整阀值之后,似乎总能满足阀值,因为基本上插入后都会修改,因为 modified/total < (modified+1)/(total +1),这样每5*stats-lease就会执行一次,是否就需要设置[tidb_auto_analyze_start_time, tidb_auto_analyze_end_time]的范围非常小恰恰每天包含一次,否则analyze太频繁

不知道现在是否有比较好的方案可用?另外不知道修改的行数是统计的什么:同一行修改多次是算一行还是多行?

可以使用 show stats_healthy; 看下 Healthy 小于 某个值,获取其表名,进行 ANALYZE

之前show stats_healthy的值都在90+,analyze之后变成100

或者是按照 information_schema 中 tables 表去获取表名,然后进行 analyze,自动获取,后面有新的表加入也不需要人工添加任务。