美文网首页
TiDB~慢查询(1)

TiDB~慢查询(1)

作者: 开心的蛋黄派 | 来源:发表于2024-06-07 13:36 被阅读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、强制走需求的索引

    相关文章

      网友评论

          本文标题:TiDB~慢查询(1)

          本文链接:https://www.haomeiwen.com/subject/jnimqjtx.html