下面整理了一套 TiDB DBA 在生产环境最常用的 30 个排查 SQL。基本覆盖:
- SQL性能问题
- 锁等待
- 热点Region
- 集群状态
- 统计信息
- GC
- 存储容量
这些基本是 TiDB运维排障的核心工具箱。
一、查看当前SQL(4个)
1 查看当前所有SQL
SELECT *
FROM information_schema.cluster_processlist;
查看:
- 当前正在执行的 SQL
- 执行时间
- 来源 IP
2 查看运行时间最长SQL
SELECT *
FROM information_schema.cluster_processlist
ORDER BY time DESC
LIMIT 10;
3 杀掉SQL
KILL TIDB <connection_id>;
例子:
KILL TIDB 123456;
4 查看事务
SELECT *
FROM information_schema.cluster_tidb_trx;
二、慢SQL分析(3个)
5 查看慢SQL
SELECT *
FROM information_schema.slow_query
ORDER BY time DESC
LIMIT 20;
6 按SQL统计慢SQL
SELECT digest,
count(*) cnt,
avg(query_time) avg_time
FROM information_schema.slow_query
GROUP BY digest
ORDER BY cnt DESC
LIMIT 10;
7 查看执行最慢SQL
SELECT *
FROM information_schema.slow_query
ORDER BY query_time DESC
LIMIT 10;
三、锁等待排查(4个)
8 查看锁等待
SELECT *
FROM information_schema.data_lock_waits;
9 查看锁持有者
SELECT *
FROM information_schema.data_locks;
10 查看事务锁
SELECT *
FROM information_schema.cluster_tidb_trx;
11 查看阻塞关系
SELECT *
FROM information_schema.cluster_lock_waits;
四、热点Region排查(4个)
TiDB性能问题 80%来自热点Region
12 查看热点region
SELECT *
FROM information_schema.tidb_hot_regions;
13 查看表region分布
SELECT *
FROM information_schema.tikv_region_status
WHERE db_name='db';
14 查看region leader分布
SELECT
store_id,
count(*) region_count
FROM information_schema.tikv_region_status
GROUP BY store_id;
15 查看region大小
SELECT
region_id,
approximate_size
FROM information_schema.tikv_region_status
ORDER BY approximate_size DESC
LIMIT 10;
五、集群状态(4个)
16 查看集群节点
SELECT *
FROM information_schema.cluster_info;
17 查看组件版本
SELECT *
FROM information_schema.cluster_info
WHERE type='tidb';
18 查看tikv状态
SELECT *
FROM information_schema.cluster_info
WHERE type='tikv';
19 查看pd节点
SELECT *
FROM information_schema.cluster_info
WHERE type='pd';
六、统计信息排查(3个)
20 查看统计信息
SELECT *
FROM mysql.stats_meta
WHERE db_name='db';
21 查看列统计
SELECT *
FROM mysql.stats_histograms
WHERE db_name='db'
AND table_name='table';
22 查看统计更新时间
SELECT
table_name,
version
FROM mysql.stats_meta
ORDER BY version DESC;
七、GC排查(3个)
23 查看GC状态
SELECT *
FROM mysql.tidb
WHERE variable_name LIKE 'tikv_gc%';
24 查看GC safe point
SELECT *
FROM mysql.tidb
WHERE variable_name='tikv_gc_safe_point';
25 查看GC生命周期
SELECT *
FROM mysql.tidb
WHERE variable_name='tikv_gc_life_time';
八、存储容量(3个)
26 查看表大小
SELECT
table_schema,
table_name,
table_rows,
data_length/1024/1024 MB
FROM information_schema.tables
ORDER BY data_length DESC
LIMIT 10;
27 查看数据库大小
SELECT
table_schema,
SUM(data_length)/1024/1024 MB
FROM information_schema.tables
GROUP BY table_schema;
28 查看索引大小
SELECT
table_schema,
table_name,
index_length/1024/1024 MB
FROM information_schema.tables
ORDER BY index_length DESC;
九、DDL任务(2个)
29 查看DDL任务
SELECT *
FROM information_schema.tidb_ddl_jobs;
30 查看DDL历史
ADMIN SHOW DDL JOBS 20;