Fork me on GitHub

show processlist查看Mysql当前正在运行的线程

show processlist


show processlist;

-- 或者
SELECT id, db, user, host, command, time, state, info 
from information_schema.PROCESSLIST 
WHERE 1=1 
-- and command != 'Sleep' 
 AND HOST LIKE '%localhost%' 
order by time desc
  1. ID
    定义: 每个连接的唯一标识符。
    值: 整数,例如 1242878。这个ID可以用于 KILL ID命令来终止特定的查询或连接。

  2. USER
    定义: 表示正在执行该查询的用户名。
    值:
    •数据库用户名,例如 i-datas。
    •如果显示为 unauthenticated user,表示这个连接还没有成功进行身份验证。
    •如果显示为 system user,表示这是MySQL内部的线程。

  3. HOST
    定义: 连接到MySQL服务器的客户端的主机信息。
    值:
    •形式为 主机名:端口号,例如 ecs-compute.hwclouds-dns.com:56916。
    •如果连接来自本地主机,可能会显示 localhost 或 127.0.0.1。

  4. DB
    定义: 该连接当前选择的数据库。
    值:
    •数据库名称,例如 ibedata。
    •如果显示为空,表示该连接还没有选择任何数据库。

  5. COMMAND
    定义: 当前连接正在执行的命令类型。
    常见值:
    •Sleep: 连接空闲状态,等待新的请求。
    •Query: 正在执行一个SQL查询。
    •Execute: 正在执行准备好的语句。
    •Connect: 连接到服务器时的初始状态。
    •Close stmt: 关闭准备好的语句。
    •Prepare: 准备执行一个SQL语句。
    •Killed: 连接已被终止,等待清理。
    •Quit: 连接正在关闭。

  6. TIME
    定义: 连接处于当前状态的持续时间,单位为秒。
    值: 整数,例如 265。时间越长可能意味着查询执行时间长或者连接长时间处于空闲状态。

  7. STATE
    定义: 当前查询或连接的状态,描述查询执行的阶段。
    常见值:
    •Sending data: 正在将查询结果发送给客户端。
    •Sorting result: 正在对查询结果排序。
    •Waiting for table level lock: 等待表级锁。
    •Locked: 查询被其他查询锁住,等待锁释放。
    •Writing to net: 将结果发送到网络上。
    •Copying to tmp table: 将数据复制到临时表。
    •End: 查询已完成,正在清理资源。
    •statistics: MySQL正在计算查询统计信息。
    •NULL: 没有特别的状态。

COMMAND执行流程

普通查询(没有预编译语句):
Connect → 2. Query → 3. Sending Data(或其他处理中状态) → 4. Sleep → 5. Quit
使用预编译语句的查询:
Connect → 2. Prepare → 3. Execute → 4. Sending Data(或其他处理中状态) → 5. Close stmt → 6. Sleep → 7. Quit
被终止的查询:
Connect → 2. Query(或 Execute)→ 3. Killed → 4. Quit

posted @ 2024-08-20 10:32  秋夜雨巷  阅读(2)  评论(0编辑  收藏  举报