哪些监控能看到mysql还没执行完的sql?或者说说命令也行

1 个回答

  • 柳依依
    努力的最大意义,是你可以选择生活。而不是被生活选择。
    ### 查看 MySQL 尚未执行完成的 SQL 的方法 #### 1. **`SHOW PROCESSLIST`** - **作用**:查看当前所有正在执行的 SQL 查询,包括其状态和运行时间。 - **用法**: ```sql SHOW FULL PROCESSLIST; ``` - **关键字段**: - `Id`:线程 ID。 - `User`:发起查询的用户。 - `Host`:客户端主机地址。 - `db`:正在访问的数据库。 - `Command`:线程执行的命令类型。 - `Time`:查询已运行的时间。 - `State`:执行状态(例如 `Locked` 表示等待资源)。 - `Info`:完整的 SQL 语句。 #### 2. **`Performance Schema`** - **作用**:提供详细的运行时信息,适合查看慢查询、锁等待等问题。 - **确保开启**: ```sql SELECT @@performance_schema; ``` 如果未开启,可以在配置文件中添加: ``` performance_schema = ON ``` - **查询当前正在执行的 SQL**: ```sql SELECT * FROM performance_schema.events_statements_current WHERE TIMER_END IS NULL; ``` - **查看锁等待信息**: ```sql SELECT * FROM performance_schema.data_locks; ``` #### 3. **慢查询日志** - **作用**:记录执行时间超过指定阈值的查询。 - **启用慢查询日志**: ```sql SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 1; -- 单位为秒 ``` - **查看慢查询日志路径**: ```sql SHOW VARIABLES LIKE 'slow_query_log_file'; ``` - **分析工具**:使用 `pt-query-digest` 分析慢查询日志以获取深入信息。 #### 4. **`INNODB_STATUS`** - **作用**:查看 InnoDB 的内部运行状态,包括活动事务和锁信息。 - **用法**: ```sql SHOW ENGINE INNODB STATUS\G; ``` - **关注内容**: - 活动事务。 - 锁等待。 - 最近检测到的死锁。 #### 5. **使用专用监控工具** - **PMM (Percona Monitoring and Management)**: - 提供实时查看当前查询、慢查询、锁等待等的功能。 - 可视化界面,便于长期分析。 - **Grafana + Prometheus**: - 通过 Prometheus 收集 MySQL 的运行状态并在 Grafana 中实时展示。 - **MySQL Enterprise Monitor**: - 官方提供的监控工具,适合企业场景。 #### 6. **`Query Profiler`** - **作用**:逐步分析每条 SQL 的执行过程。 - **启用方式**: ```sql SET profiling = 1; SELECT * FROM your_table; -- 示例查询 SHOW PROFILES; SHOW PROFILE FOR QUERY 1; -- 查看 Query 1 的详细信息 ``` - **用途**:适合调试单条 SQL 的执行步骤。 ### 总结 实时查看 MySQL 正在执行的 SQL 语句可以优先使用 `SHOW FULL PROCESSLIST` 或 `Performance Schema`,这些方法直观且高效。如果需要长时间分析,可以结合慢查询日志或专用监控工具如 PMM、Grafana。对于锁等待和事务分析,`INNODB_STATUS` 是重要工具。
    发布于 2024-12-08 16:28 •IP属地 河北
    举报
    评论
    收藏