TiDB~慢查询(1)

2024-06-07  本文已影响0人  开心的蛋黄派

TiDB表健康度

健康度的定义
TiDB表的健康度是反映表统计信息准确性和时效性的一个指标。统计信息,包括表的行数、列的分布情况等,对查询优化器选择最佳查询路径至关重要。

健康度的影响

查看健康度
在TiDB中,可以使用SHOW STATS_HEALTHY命令来查看表的健康度。此命令会返回每个表的健康度评分,帮助数据库管理员识别哪些表的统计信息可能需要更新。

维护健康度
如果表的健康度较低,执行计划不准确,可以通过执行ANALYZE TABLE命令来手动更新统计信息。在某些情况下,TiDB也可能会自动触发ANALYZE TABLE以提高健康度。

TiDB自动ANALYZE TABLE相关参数

TiDB中的自动ANALYZE TABLE功能涉及多个关键参数,这些参数影响统计信息的收集方式和效率:

  1. tidb_auto_analyze_ratio

    • 控制自动更新统计信息的频率。当表中数据的变更量(插入、删除、更新操作影响的行数)与表的总行数之比超过此设置值时,TiDB会触发自动的ANALYZE TABLE操作。
    • 默认值通常是一个较小的正数,如0.1(10%),表示当表中10%的数据变化时,系统会自动更新统计信息,根据实际业务确定。
  2. tidb_auto_analyze_start_timetidb_auto_analyze_end_time

    • 设置自动ANALYZE TABLE操作的时间窗口。start_time指定允许自动分析开始的时间,end_time指定结束时间。
    • 这有助于数据库管理员在系统负载较低时更新统计信息,减少对业务高峰期性能的影响,推荐设置为凌晨
  3. tidb_enable_auto_analyze

    • 布尔类型参数,控制是否启用自动ANALYZE TABLE功能。设置为ON时,TiDB会根据上述参数自动触发统计信息更新。
    • 设置为OFF时,需要手动执行ANALYZE TABLE命令来更新统计信息。

注意
在执行计划不准确时,可以手动触发ANALYZE TABLE来进行统计信息的更新。

查询计划不准时

1、重新收集统计信息
2、强制走需求的索引

上一篇下一篇

猜你喜欢

热点阅读