MySQL如何释放sql

在 MySQL 中,如果 SQL 太多且运行时间长,你可以通过查询 information_schema.PROCESSLIST 表来查看正在运行的 SQL,并按执行时间(TIME 字段)进行排序。

1. 查看正在运行的 SQL 并按执行时间降序排序

执行以下 SQL 语句:

复制代码
SELECT 
    ID, 
    USER, 
    HOST, 
    DB, 
    COMMAND, 
    TIME, 
    STATE, 
    INFO 
FROM 
    information_schema.PROCESSLIST 
WHERE 
    COMMAND != 'Sleep'  -- 排除空闲连接
ORDER BY 
    TIME DESC;          -- 按执行时间从长到短排序

字段说明:

  • ID: 进程 ID,用于杀死会话。
  • USER: 执行该 SQL 的用户。
  • HOST: 客户端主机。
  • DB: 当前连接的数据库。
  • COMMAND: 当前命令类型(如 Query, Sleep, Connect 等)。
  • TIME: 执行时间(秒),这是排序的关键字段。
  • STATE: 当前状态(如 sending data, sorting result 等)。
  • INFO: 正在执行的 SQL 语句内容(如果语句太长可能会被截断)。

2. 只查看执行时间超过特定阈值的 SQL

如果你想找出执行时间超过例如 10 秒 的慢 SQL:

复制代码
SELECT 
    ID, 
    USER, 
    TIME, 
    INFO 
FROM 
    information_schema.PROCESSLIST 
WHERE 
    COMMAND != 'Sleep' 
    AND TIME > 10 
ORDER BY 
    TIME DESC;

3. 生成批量杀死慢查询的语句

如果发现某些 SQL 卡死或运行太久,可以生成 KILL 语句来终止它们:

复制代码
-- 生成杀死执行时间超过 60 秒的会话的 SQL 语句
SELECT 
    CONCAT('KILL ', ID, ';') AS kill_command
FROM 
    information_schema.PROCESSLIST 
WHERE 
    COMMAND != 'Sleep' 
    AND TIME > 60 
ORDER BY 
    TIME DESC;

复制查询结果中的 kill_command 执行即可。


4. 进阶:使用 sys 库查看更详细的统计信息(MySQL 5.7+)

如果你的 MySQL 版本是 5.7 或更高,推荐使用 sys schema,它提供了更易读的视图:

复制代码
-- 查看当前正在执行的语句及其耗时详情
SELECT 
    thd_id, 
    conn_id, 
    user, 
    db, 
    command, 
    state, 
    time, 
    current_statement, 
    lock_latency 
FROM 
    sys.processlist 
WHERE 
    command != 'Sleep' 
ORDER BY 
    time DESC;

或者查看历史平均执行时间最长的 SQL(不仅仅是当前运行的):

复制代码
SELECT 
    query, 
    exec_count, 
    total_latency, 
    avg_latency, 
    max_latency 
FROM 
    sys.statement_analysis 
ORDER BY 
    avg_latency DESC 
LIMIT 10;

注意事项

  • 权限要求 :普通用户只能看到自己的进程,需要 PROCESS 权限(通常 DBA 拥有)才能看到所有用户的正在运行的 SQL。
  • INFO 字段截断information_schema.PROCESSLIST 中的 INFO 字段默认只显示前 1024 个字符。如果需要查看完整 SQL,需查询 performance_schema.events_statements_current 表(需开启相关性能监控)。
相关推荐
狂师9 分钟前
测试人员必备:推荐一款智能测试数据清理AI Skill,支持db、redis、mq等
数据库·aigc·测试
L16247621 分钟前
Zabbix 7.0 LTS 完整部署与运维手册(AlmaLinux 9 + MySQL 8.0 + Nginx)
运维·mysql·zabbix
疯狂打码的少年37 分钟前
【软件工程】需求工程:需求获取与需求分析
数据库·笔记·软件工程·需求分析
Database_Cool_38 分钟前
阿里云 PolarDB-X vs TiDB 分布式数据库选型指南
数据库·分布式·阿里云·tidb
数据库小学妹39 分钟前
分布式数据库架构怎么选?三种路线对比+迁移避坑指南
数据库·分布式·分布式数据库·数据库架构·数据迁移·数据库选型
桑榆肖物1 小时前
在 .NET MAUI 里接入 PP-OCRv6 文本检测实现查找并点击
数据库·redis·.net·maui
味悲1 小时前
SQL注入从入门到实战
数据库·sql·安全
KaMeidebaby1 小时前
卡梅德生物技术快报|兔单克隆抗体:噬菌体 Fab 免疫文库搭建实操:兔单克隆抗体重组构建完整参数
前端·网络·数据库·人工智能·算法
复园电子4 小时前
企业级PDF批量盖章方案选型指南
数据库·pdf
AI-好学者11 小时前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag