TiDB 可观测性 UP!UP!UP! Performance Overview 面板开启 TiDB 性能调优自助服务时代
Performance Overview 面板 —— 数据库人的浪漫:原本纷繁复杂的监控数据,被化繁为简。只此青绿间,系统瓶颈,一目了然。数据库性能调优,也可以很舒心写意。
Performance Overview 面板在 TiDB v6.1.0 正式发布,为所有 TiDB 用户提供一个系统级别的总体性能诊断入口。本文详细介绍了 Performance Overview 面板的设计理念及应用实践。
本文作者:宋昱颖,PingCAP 数据库性能测试工程师,Performance Overview 面板作者之一。有 5 年的数据库性能调优和性能诊断工具的设计开发经验,目前在 PingCAP 主要负责数据库性能测试服务化建设和数据库性能调优工作。 曾在 Oracle Real-World Performance 团队担任高级数据库性能工程师。
Highlight
用户问题
TiDB 监控数据太多,学习门槛高。 目前 TiDB 的 Grafana 监控面板多达十几个,主要是按 TiDB 的各个组件分类和编排,可谓十分全面。众多的指标都是 PingCAP 的研发和广大社区贡献者的心血和劳动结晶,却没有被很好的利用到性能调优工作中。究其原因,主要是众指标缺乏合理的编排而用户也缺少一种可靠的、可重复的方法论,从而导致 TiDB 性调优学习门槛很高,让用户望而生畏。 用户在使用 TiDB 的过程中基本只看 Dashboard 的 QPS 面板。 性能调优玄学化,缺乏可靠、可重复的方法论和配套的工具。 性能诊断耗时长,难度大,对专家依赖程度高。
解决方案
以数据库时间为基础,以颜色为标识,帮助快速定位性能瓶颈
按 SQL 处理类型分解,判断哪种类型的 SQL 语句消耗数据库时间最多。对应的分解公式为: DB Time = Select Time + Insert Time + Update Time + Delete Time + Commit Time + .. 按 SQL 处理的 4 个步骤(即 get_token/parse/compile/execute)分解,判断哪个步骤消耗的时间最多。对应的分解公式为: DB Time = Get Token Time + Parse Time + Comiple Time + Execute Tim 对于 execute 耗时,按照 TiDB 执行器本身的时间、TSO 等待时间、KV 请求时间和重试的执行时间,判断执行阶段的瓶颈。对应的分解公式为: Execute Time ~= TiDB Executor Time + KV Request Time + PD TSO Wait Time + Retried execution time
颜色优化法
Database Time By SQL Type:蓝色标识代表 Select 语句,绿色标识代表 Update、Insert、Commit 等 DML 语句。红色标识代表 General 类型,包含 StmtPrepare、StmtReset、StmtFetch、StmtClose 等命令。 Database Time By SQL Phase:execute 执行阶段为绿色,其他三个阶段偏红色系,如果非绿色的颜色占比明显,意味着在执行阶段之外数据库消耗了过多时间,需要进一步分析根源。一个常见的场景是因为无法使用执行计划缓存,导致 compile 阶段的橙色占比明显。 SQL Execute Time Overview:绿色系标识代表常规的写 KV 请求(例如 Prewrite 和 Commit),蓝色系标识代表常规的读 KV 请求(例如 Cop 和 Get),其他色系标识需要注意的问题。例如,悲观锁加锁请求为红色,TSO 等待为深褐色。如果非蓝色系或者非绿色系占比明显,意味着执行阶段存在异常的瓶颈。例如,当发生严重锁冲突时,红色的悲观锁时间会占比明显;当负载中 TSO 等待的消耗时间过长时,深褐色会占比明显。
化繁为简,精选关键性能指标
总体概览:数据库时间和 SQL 执行时间概览,通过颜色优化法,快速识别数据库负载特征和性能瓶颈 资源负载:关键指标和资源利用率,包含数据库 QPS、应用和数据库的连接信息和请求命令类型、数据库内部 tso 和 kv 请求 OPS、TiDB 和 TiKV 的资源使用概况。 自上而下的延迟分解:Query 延迟和连接空闲时间对比、Query 延迟分解、execute 阶段 tso 请求和 kv 请求的延迟、TiKV 内部写延迟的分解等。
使用示例
例子 1
例子 2
云上某客户订单系统:判断瓶颈是否在数据库内部
平均 Query Duration 为 1.69ms,事务中连接空闲时间 (Connection Idle Duration) avg-in-txn 为 18ms。说明事务中,TiDB 平均花了 1.69ms 处理完一个 SQL 语句之后,需要等待 18ms 才能收到下一条语句。用户响应时间的瓶颈不在 TiDB 中。和客户沟通后发现,系统瓶颈是客户应用和数据库分别部署在相距 700 公里的两个不同的数据中心导致的网络延迟。
例子 3
官方解读
优化概述:本文介绍性能优化的基本概念,比如用户响应时间、吞吐和数据库时间,以及性能优化的通用流程。 优化方法:本文介绍了基于数据库时间的系统优化方法,以及如何利用 TiDB Performance Overview 面板进行性能分析和优化。包括面板每个指标的含义,正常指标范围,导致指标异常的常见原因有哪些和常见的调优手段有哪些等。 优化实践:TiDB 提供了完善的性能诊断和分析功能,例如 TiDB Dashboard 的 Top SQL 和 Continuous Profiling 功能,以及 TiDB Performance Overview 面板。本文介绍如何综合利用这些功能,对同一个 OLTP 负载在七种不同运行场景下的性能表现进行分析和对比,并演示了具体的 OLTP 负载的优化过程,帮助你更快地对 TiDB 的性能进行分析和优化。
FAQ
从 v6.1.0 起,TiDB Grafana 组件默认内置了 Performance Overview 面板。 如果你的 TiDB 版本低于 v6.1.0,需要手动导入 performance_overview.json
。Performance overview 面板兼容 TiDB v4.x 和 v5.x 版本。导入方法如图所示:
Performance Testing Team 年度诚意之作——优化三部曲 Performance Overview 面板重要监控指标详解
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 习主席今年首次出访牵动世界目光 4954326
- 2 广东高速塌方遇难人数升至36人 4920123
- 3 90后烧饼哥回应投入3800元赚百万 4825709
- 4 文旅深度融合优质活动频繁“上新” 4702014
- 5 高速塌方家属瘫坐在地 记者几度哽咽 4635134
- 6 大唐不夜城已被六国游客攻陷 4570988
- 7 茶水铺狗子累到不想营业 4410234
- 8 美国涉俄新制裁对中国实体下手 4341554
- 9 72岁老人喜得贵子系谣言 4281083
- 10 王石放弃千万退休金 田朴珺发文 4107943