你想了解 MySQL 中的 global_status(全局状态),核心需求应该是搞清楚它是什么、怎么查看、常用的状态指标有哪些,以及它能解决什么问题。

一、什么是 MySQL global_status

global_status 是 MySQL 中存储全局系统状态信息的内置视图(属于 information_schema 库),也可以通过 SHOW GLOBAL STATUS 命令直接查看。它记录了 MySQL 服务启动以来的所有核心运行指标,比如连接数、查询数、缓存命中率、IO 操作数等,是监控 MySQL 性能、排查问题的核心依据。

简单来说:global_status 就像 MySQL 的“仪表盘”,能实时反映数据库的整体运行状态。

二、如何查看 global_status

1. 基础查看方式(推荐)
-- 查看所有全局状态(数据量较大,不建议直接执行)
SHOW GLOBAL STATUS;

-- 模糊查询指定的状态指标(常用)
SHOW GLOBAL STATUS LIKE 'XXX';

-- 示例:查看连接数相关指标
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Connections';
2. 从 information_schema 库查询
-- 精准查询单个状态值
SELECT VARIABLE_VALUE 
FROM information_schema.GLOBAL_STATUS 
WHERE VARIABLE_NAME = 'Threads_connected';

-- 批量查询多个状态值
SELECT 
  VARIABLE_NAME, 
  VARIABLE_VALUE 
FROM information_schema.GLOBAL_STATUS 
WHERE VARIABLE_NAME IN (
  'Threads_connected',  -- 当前已建立的连接数
  'Connections',        -- 总连接次数(累计)
  'Slow_queries',       -- 慢查询数
  'Qcache_hits'         -- 查询缓存命中数(MySQL 8.0 已移除查询缓存)
);

三、常用的核心 global_status 指标(新手必知)

状态名 含义
Threads_connected 当前已建立的客户端连接数(实时值)
Max_used_connections 自启动以来达到的最大连接数(峰值)
Connections 自启动以来客户端尝试连接的总次数(累计)
Slow_queries 慢查询次数(超过 long_query_time 阈值的查询,默认10秒)
Com_select SELECT 语句执行次数(累计)
Com_insert/Com_update/Com_delete 增/改/删语句执行次数(累计)
Innodb_rows_read InnoDB 引擎读取的行数
Innodb_rows_inserted InnoDB 引擎插入的行数
Uptime MySQL 服务运行时长(秒)
Bytes_received/Bytes_sent 服务器接收/发送的字节数(网络IO)

四、实战示例:用 global_status 排查常见问题

1. 检查连接数是否超标
-- 1. 查看当前连接数
SHOW GLOBAL STATUS LIKE 'Threads_connected';

-- 2. 查看最大连接数配置(对比判断是否需调整)
SHOW VARIABLES LIKE 'max_connections';

-- 示例输出解读:
-- Threads_connected = 80,max_connections = 100 → 连接数充足
-- Threads_connected = 95,max_connections = 100 → 接近阈值,需关注或调整
2. 检查慢查询情况
-- 1. 查看慢查询数
SHOW GLOBAL STATUS LIKE 'Slow_queries';

-- 2. 查看慢查询阈值配置
SHOW VARIABLES LIKE 'long_query_time';

-- 若 Slow_queries 持续增长,说明存在性能差的SQL,需开启慢查询日志排查

五、注意事项(新手避坑)

  1. 全局 vs 会话GLOBAL STATUS 是全局指标(所有连接),SESSION STATUS 是当前会话指标,不要混淆;
  2. 累计值 vs 实时值:大部分指标是累计值(从服务启动开始计数),如需看增量,需多次查询对比(比如隔10秒查两次 Com_select,差值就是10秒内的查询数);
  3. MySQL版本差异:MySQL 8.0 移除了查询缓存相关指标(如 Qcache_hits),部分指标名称会略有调整;
  4. 权限要求:查看 global_status 需要 PROCESS 权限(普通用户可能无权限,需管理员授权)。

总结

  1. global_status 是 MySQL 的核心监控视图,记录了数据库运行的所有全局指标,是性能排查的关键依据;
  2. 常用查看方式是 SHOW GLOBAL STATUS LIKE '指标名' 或从 information_schema.GLOBAL_STATUS 表查询;
  3. 重点关注连接数(Threads_connected)、慢查询数(Slow_queries)、SQL执行次数(Com_*)等核心指标,可快速定位性能问题。

如果你的需求是具体排查某类问题(比如连接数过高、慢查询多),可以告诉我,我会针对性给出基于 global_status 的排查步骤。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐