- 关于 TiDB
- 快速上手
- 部署集群
- 数据迁移
- 数据迁移概述
- 从 MySQL 迁移至 TiDB
- 从 CSV 文件迁移至 TiDB
- 运维操作
- 监控与告警
- 故障诊断
- 性能调优
- 系统调优
- 软件调优
- SQL 性能调优
- 教程
- TiDB 生态工具
- TiDB 生态工具功能概览
- TiDB 生态工具适用场景
- TiDB 工具下载
- Backup & Restore (BR)
- TiDB Binlog
- TiDB Lightning
- TiCDC 简介
- Dumpling 使用文档
- sync-diff-inspector
- Loader 使用文档
- Mydumper 使用文档
- Syncer 使用文档
- TiSpark
- 参考指南
- 架构
- 监控指标
- 安全加固
- 权限
- SQL
- SQL 语言结构和语法
- 属性
- 字面值
- Schema 对象名
- 关键字
- 用户自定义变量
- 表达式语法
- 注释语法
- SQL 语句
- ADD COLUMN
- ADD INDEX
- ADMIN
- ALTER DATABASE
- ALTER INSTANCE
- ALTER TABLE
- ALTER USER
- ANALYZE
- BACKUP
- BEGIN
- CHANGE COLUMN
- CHANGE DRAINER
- CHANGE PUMP
- COMMIT
- CREATE [GLOBAL|SESSION] BINDING
- CREATE DATABASE
- CREATE INDEX
- CREATE ROLE
- CREATE SEQUENCE
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE USER
- CREATE VIEW
- DEALLOCATE
- DELETE
- DESC
- DESCRIBE
- DO
- DROP [GLOBAL|SESSION] BINDING
- DROP COLUMN
- DROP DATABASE
- DROP INDEX
- DROP ROLE
- DROP SEQUENCE
- DROP STATS
- DROP TABLE
- DROP USER
- DROP VIEW
- EXECUTE
- EXPLAIN ANALYZE
- EXPLAIN
- FLASHBACK TABLE
- FLUSH PRIVILEGES
- FLUSH STATUS
- FLUSH TABLES
- GRANT
- GRANT
- INSERT
- KILL [TIDB]
- LOAD STATS
- MODIFY COLUMN
- PREPARE
- RECOVER TABLE
- RENAME INDEX
- RENAME TABLE
- REPLACE
- RESTORE
- REVOKE
- REVOKE
- ROLLBACK
- SELECT
- SET DEFAULT ROLE
- SET [NAMES|CHARACTER SET]
- SET PASSWORD
- SET ROLE
- SET TRANSACTION
- SET [GLOBAL|SESSION]
- SHOW [BACKUPS|RESTORES]
- SHOW ANALYZE STATUS
- SHOW [GLOBAL|SESSION] BINDINGS
- SHOW BUILTINS
- SHOW CHARACTER SET
- SHOW COLLATION
- SHOW [FULL] COLUMNS FROM
- SHOW CONFIG
- SHOW CREATE SEQUENCE
- SHOW CREATE TABLE
- SHOW CREATE USER
- SHOW DATABASES
- SHOW DRAINER STATUS
- SHOW ENGINES
- SHOW ERRORS
- SHOW [FULL] FIELDS FROM
- SHOW GRANTS
- SHOW INDEX [FROM|IN]
- SHOW INDEXES [FROM|IN]
- SHOW KEYS [FROM|IN]
- SHOW MASTER STATUS
- SHOW PLUGINS
- SHOW PRIVILEGES
- SHOW [FULL] PROCESSLIST
- SHOW PROFILES
- SHOW PUMP STATUS
- SHOW SCHEMAS
- SHOW STATS_HEALTHY
- SHOW STATS_HISTOGRAMS
- SHOW STATS_META
- SHOW [GLOBAL|SESSION] STATUS
- SHOW TABLE NEXTROWID
- SHOW TABLE REGIONS
- SHOW TABLE STATUS
- SHOW [FULL] TABLES
- SHOW [GLOBAL|SESSION] VARIABLES
- SHOW WARNINGS
- SHUTDOWN
- Split Region 使用文档
- START TRANSACTION
- TRACE
- TRUNCATE
- UPDATE
- USE
- 数据类型
- 函数与操作符
- 约束
- 生成列
- SQL 模式
- 事务
- 垃圾回收 (GC)
- 视图
- 分区表
- 字符集和排序规则
- 系统表
- TiDB 系统表
- INFORMATION_SCHEMA
- TiDB 简介
- ANALYZE_STATUS
- CHARACTER_SETS
- CLUSTER_CONFIG
- CLUSTER_HARDWARE
- CLUSTER_INFO
- CLUSTER_LOAD
- CLUSTER_LOG
- CLUSTER_SYSTEMINFO
- COLLATIONS
- COLLATIONCHARACTERSET_APPLICABILITY
- COLUMNS
- DDL_JOBS
- ENGINES
- INSPECTION_RESULT
- INSPECTION_RULES
- INSPECTION_SUMMARY
- KEYCOLUMNUSAGE
- METRICS_SUMMARY
- METRICS_TABLES
- PARTITIONS
- PROCESSLIST
- SCHEMATA
- SEQUENCES
- SESSION_VARIABLES
- SLOW_QUERY
- STATISTICS
- TABLES
- TABLE_CONSTRAINTS
- TABLESTORAGESTATS
- TIDBHOTREGIONS
- TIDB_INDEXES
- TIDBSERVERSINFO
- TIFLASH_REPLICA
- TIKVREGIONPEERS
- TIKVREGIONSTATUS
- TIKVSTORESTATUS
- USER_PRIVILEGES
- VIEWS
- Metrics Schema
- SQL 语言结构和语法
- UI
- CLI
- 命令行参数
- 配置文件参数
- 系统变量
- 存储引擎
- TiUP
- 遥测
- 错误码与故障诊断
- TiCDC Open Protocol
- 通过拓扑 label 进行副本调度
- 常见问题解答 (FAQ)
- 术语表
TiDB Dashboard 监控关系图
TiDB Dashboard 监控关系图是 TiDB v4.0.7 起提供的新功能,可以将集群中各个内部流程的耗时监控数据绘制为关系图,帮助用户快速了解集群中各个环节的耗时及关系。
访问关系图
登录 TiDB Dashboard 后点击左侧导航的集群诊断可以进入此功能页面:
设置区间起始时间和区间长度参数后,点击生成监控关系图按钮后,会进入监控关系图页面。
关系图解读
下面是一份监控耗时关系图示例,描述的是某个 TiDB 集群在 2020-07-29 16:36:00 开始往后 5 分钟内,TiDB 集群中各个监控的总耗时比例,以及各项监控之间的关系。
例如以下 tidb_execute
节点监控图表示:tidb_execute
监控项的总耗时为 19306.46 秒,占总查询耗时的 89.4%,其中 tidb_execute
节点自身的耗时是 9070.18 秒,占总查询耗时的 42%。将鼠标悬停在该方框上,可以看到监控项的注释说明,总耗时、平均耗时、平均 P99 耗时等详细信息。
节点的含义
每个方框节点代表一个监控项,包含了以下信息:
- 监控项的名称
- 监控项的总耗时
- 监控项总耗时和查询总耗时的比例
节点监控的总耗时 = 节点自身的耗时 + 子节点的耗时
,所以某些节点监控图会显示节点自身的耗时和总耗时的比例。例如 tidb_execute
监控:
tidb_execute
是监控项的名字。该监控是指一条 SQL 请求在 TiDB 执行引擎中的执行耗时。19306.46s
表示tidb_execute
监控项消耗的总时间为 19306.46 秒。89.40%
表示 19306.46 秒占所有 SQL 查询总耗时(包括用户 SQL 和 TiDB 内部的 SQL)的比例为 89.40%。查询总耗时是tidb_query
监控项的总耗时。9070.18s
表示tidb_execute
节点自身总执行耗时是 9070.18 秒,其余部分是被其子节点消耗的时间。42.00%
表示 9070.18 秒占所有查询总耗时的比例为 42.00%。
将鼠标悬停在该节点后,会显示监控项的更多详细信息:
上图信息为该项监控的注释说明,包括总耗时、总次数、平均耗时和平均 P99、P90、P80 耗时。
监控项之间的父子关系
下面以 tidb_execute
监控为例介绍该监控项相关的子节点:
可以看到,tidb_execute
包含两个子节点,分别是:
pd_start_tso_wait
:等待事务start_tso
的耗时,其总耗时是 300.66 秒。tidb_txn_cmd
:TiDB 执行事务相关命令的耗时,其总耗时是 9935.62 秒。
另外,tidb_execute
还有一条虚线箭头指向 tidb_cop
监控,这里虚线箭头的含义如下:
tidb_execute
包含 tidb_cop
监控的耗时,但是 cop 请求有可能并发执行。例如对两个表的进行 join
查询的 execute
耗时为 60 秒,其中 join
的两个表会并行地执行 cop 扫表请求。假如 cop 请求执行时间分别为 40 秒和 30 秒,那 cop 请求的总耗时是 70 秒,但是 execute
执行耗时只有 60 秒。所以如果父节点的耗时不完全包含子节点的耗时,就用虚线箭头来指向子节点。
注意:
当节点有虚线箭头指向的子节点时,该节点的本身的耗时是不准确的。例如
tidb_execute
监控中,tidb_execute
节点本身的耗时为9070.18 = 19306.46 - 300.66 - 9935.62
。这里tidb_cop
节点的耗时并不会计入子节点耗时的计算,但实际上,tidb_execute
监控本身的耗时 9070.18 秒中包含了tidb_cop
一部分监控节点的耗时,但无法确认具体包含了多少耗时。
tidb_kv_request
及其父节点
tidb_kv_request
的父节点 tidb_cop
和 tidb_txn_cmd.get
都用虚拟箭头指向 tidb_kv_request
,这里表示:
tidb_cop
的耗时包含部分tidb_kv_request
的耗时tidb_txn_cmd.get
的耗时也包含部分的tidb_kv_request
的耗时。
但是 tidb_cop
具体有多少耗时是 tidb_kv_request
消耗的,无法进行确认。
tidb_kv_request.Get
:TiDB 发送 Get 类型的 kv 请求的耗时。tidb_kv_request.Cop
:TiDB 发送 Cop 类型的 kv 请求的耗时。
tidb_kv_request
与 tidb_kv_request.Get
和 tidb_kv_request.Cop
并不是父节点包含子节点的关系,而是组成关系。子节点的名称前缀是父节点的名称加上 .xxx
,即为父节点的子类。这里可以理解为,TiDB 发送 kv 请求的总耗时为 14745.07 秒,其中 Get
和 Cop
类型的 kv 请求的总耗时分别为 9798.02 秒和 4946.46 秒。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论