读性能慢-业务变动

  1. 业务并发请求增加\业务逻辑变化/新增业务

  • 问题定位
    方法一
    查看监控 Cluster-Overview -> TiDB -> Statments QPS 中 各类语句QPS 数量是否在近期有明显改变。如 类型为 Select 是否有明显增加, 或类型为Insert 与 Replace 从监控上观察是负有所变化。
    方法二
    查看监控 TiKV-detail -> Rockdb-KV -> read flow 如果 read flow 相关监控有明显增加说明,业务查询的数据量有明显的变化,例如突然新上了一个 AP 场景的 SQL 导致读请求数据大量增加

  • 解决方法
    本质上来说业务上的 迭代改变是正常的需求,而业务的改变也只是一个诱因。需要我们对集群进行分析,最终才能找到具体原因。

  1. 表结构发生变化

  • 问题定位
    查看监控 Cluster-TiDB -> DDL -> DDL OPM 查看近期是否有 DDL 操作
    通过 TiDB SQL 查询历史上 50条 DDL 操作
    如:
    admin show DDL jobs 50;

  • 解决方法
    主要原因有二

  • 在 create index 后,由于统计信息收集可能还未完成,或者集群中设置了auto analyze 的时间窗口。此时统计信息并不准确,导致执行计划跑偏。
    我们可以通过在创建完索引后,单独对新建索引进行统计信息收集,或对整个表进行一次全量统计信息收集。相关语句如下

  • 在读写压力较大的集群上,由于部分 DDL 是会有磁盘 IO 开销的,此时将会时查询的 Duration 升高

非常感谢分享