0%

sql监控命令

MySQL 核心监控监控命令全解析:诊断与优化必备工具

MySQL 提供了丰富的 show 命令用于监控数据库状态、索引、进程、日志等关键信息,是数据库诊断、性能优化和故障排查的核心工具。本文系统整理常用监控命令及其应用场景,帮助快速运维运维运维和开发人员快速掌握数据库运行状态。

索引与表信息监控

1. show index from <table>

  • 功能:展示指定表的所有索引详情,包括索引名称、类型、字段、基数(cardinality)等。

  • 示例:

    1
    show index from user;
  • 关键输出:

    • Key_name:索引名称(PRIMARY 表示主键)。
    • Seq_in_index:字段在索引中的位置(最左前缀原则依据)。
    • Cardinality:索引基数(估算的唯一值数量,接近表行数表示索引选择性好)。
  • 用途:分析索引有效性,识别冗余索引或低选择性索引(如性别字段的索引)。

2. show table status

  • 功能:展示当前数据库中所有表的元数据(如存储引擎、行数、大小等),可加 like 筛选特定表。

  • 示例:

    1
    2
    3
    4
    5
    -- 查看所有表状态
    show table status;

    -- 查看指定表状态
    show table status like 'user%';
  • 关键输出:

    • Engine:表使用的存储引擎(如 InnoDB、MyISAM)。
    • Rows:表中行数(InnoDB 为估算值)。
    • Data_length:数据占用空间(字节)。
    • Index_length:索引占用空间(字节)。
    • Auto_increment:自增字段的下一个值。
  • 用途:评估表大小、判断存储引擎是否合理、监控自增 ID 是否即将耗尽。

进程与线程监控

3. show [full] processlist

  • 功能:显示当前所有活跃线程(连接)的状态,full 选项可查看完整 SQL 语句。

  • 示例:

    1
    2
    3
    4
    5
    -- 简要信息
    show processlist;

    -- 完整SQL
    show full processlist;
  • 关键输出:

    • Id:线程 ID(用于 kill 命令终止线程)。
    • State:线程当前状态(如 SleepQueryLocked,详见「查询状态」章节)。
    • Time:线程处于当前状态的时间(秒)。
    • Info:执行的 SQL 语句。
  • 用途:排查慢查询、锁阻塞(如 Time 过大的 Locked 状态线程)、连接泄露(大量 Sleep 线程)。

系统变量与状态监控

4. show [global | session] variables

  • 功能:显示系统变量配置(global 为全局配置,session 为当前会话配置,默认 session)。

  • 示例:

1
2
3
4
5
-- 查看所有全局变量
show global variables;

-- 筛选缓冲池相关变量
show variables like 'innodb_buffer_pool%';
  • 常用变量:

    • max_connections:最大连接数。
    • innodb_buffer_pool_size:InnoDB 缓冲池大小。
    • slow_query_log:是否开启慢查询日志。
  • 用途:检查数据库配置是否符合预期(如缓冲池大小、连接数限制)。

5. show [global | session] status

  • 功能:显示系统状态计数器(如查询次数、锁等待次数),反映数据库运行指标。

  • 示例:

    1
    2
    3
    4
    5
    -- 查看全局状态
    show global status;

    -- 筛选InnoDB缓冲池状态
    show status like 'innodb_buffer_pool%';
  • 关键指标:

    • Threads_connected:当前连接数。
    • Queries:总查询次数。
    • Innodb_buffer_pool_hit_rate:缓冲池命中率。
    • Slow_queries:慢查询次数。
  • 用途:评估数据库负载(如连接数、查询量)、诊断性能瓶颈(如低缓冲池命中率)。

存储引擎监控

6. show engines

  • 功能:显示所有可用存储引擎及其状态(SUPPORT 列:YES 表示可用,DEFAULT 为默认引擎)。

  • 示例:

    1
    show engines;
  • 用途:确认存储引擎是否支持(如 InnoDB、MyISAM),检查默认引擎配置。

7. show engine <engine_name> status

  • 功能:显示指定存储引擎的详细运行状态(以 InnoDB 最常用)。

  • 示例:

    1
    2
    -- 查看InnoDB状态(含缓冲池、事务、锁等信息)
    show engine innodb status \G
  • 输出内容:包含后台线程、事务、锁、IO、缓冲池等信息(详见「InnoDB 监控」章节)。

  • 用途:诊断 InnoDB 内部问题(如锁竞争、缓冲池效率低、日志 IO 瓶颈)。

8. show plugins

  • 功能:显示所有已加载的插件(如存储引擎、全文索引插件、加密插件等)。

  • 示例:

    1
    show plugins;
  • 用途:确认插件是否正常加载(如 innodb 插件状态为 ACTIVE)。

日志与复制监控

9. 二进制日志相关命令

  • show binary logs:列出所有二进制日志文件(用于数据恢复和主从复制)。

    1
    show binary logs;
  • show binlog events [in 'log_file']:查看二进制日志中的具体事件(如Query、Write_rows)。

    1
    2
    -- 查看指定binlog文件的事件
    show binlog events in 'mysql-bin.000001' limit 10;
  • 用途:验证二进制日志是否正常生成,排查主从复制数据不一致问题。

10. 主从复制监控

  • show master status:在主库查看当前二进制日志位置(主从复制的关键参数)。

    1
    show master status;
  • show slave status:在从库查看复制状态(是否同步、延迟时间等)。

    1
    show slave status \G
  • 关键指标

    • Slave_IO_RunningSlave_SQL_Running:均为 Yes 表示复制正常。
    • Seconds_Behind_Master:从库延迟秒数(0 表示无延迟)。
  • 用途:监控主从复制健康状态,排查复制中断或延迟问题。

  • show slave hosts:在主库查看连接的从库列表(需从库配置 report_host)。

使用技巧

  1. 结合 like 筛选:所有 show 命令均可通过 like 'pattern' 过滤结果,例如:

    1
    show status like 'slow_queries'; -- 只查看慢查询次数
  2. 全局 vs 会话global 选项查看整个数据库的累计状态,session 只查看当前连接的状态(默认)。

  3. 格式化输出:使用 \G 替代 ; 可将结果按行垂直显示,更易读(尤其适合长输出,如 show engine innodb status \G)。

  4. 定期监控:结合脚本定期执行关键命令(如 show processlistshow status),记录指标变化,便于趋势分析

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10