美文网首页
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慢查询日志

    配置参数修改 TiDB也支持输出慢查询日志,通过修改配置文件可以指定慢查询日志的文件名以及耗时阈值。 配置文件 /...

  • TiDB执行计划(一)

    最近排查了项目中TiDB慢sql,查询执行计划时,发现TiDB执行计划详情和mysql的还有一些区别,今天来学习分...

  • TiDB的慢查询日志分析

    TiDB 在 V2.1.8 之后更改了慢日志格式,V2.1.8 之前的版本请看这个文档。 一条不合理的 SQL 语...

  • 如何定位并优化慢查询SQL

    1.根据慢日志定位慢查询sql 慢查询配置show variables like "%query%"慢查询数量sh...

  • mysql慢查询

    通用查询日志和慢查询日志。 (1)通用查询日志 (2)慢查询日志 清空slow.log表

  • mysql慢查询日志

    mysql慢查询日志 1.慢查询日志 2.查看配置 3.临时开启慢查询日志 4.通过sql语句检查 5.关闭慢查询...

  • mysql慢查询

    1、定义 将超过指定时间的SQL语句查询称为“慢查询 2、记录慢查询的方法: 查看/设置“慢查询”的时间定义sho...

  • mysql查询慢,如何处理

    1.打开慢查询,查看慢查询语句 2.通过show full processlist 查看查询慢的语句 3.查看cp...

  • Redis 读写优化

    1.慢查询 两点说明:(1) 慢查询发生在第3阶段(2) 客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因...

  • Mysql 优化

    1.优化查询 (1)慢查询日志 慢查询日志记录了查询过程当中影响查询速度的因素,可通过下面的命令查看是否开启: 输...

网友评论

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

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