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
-
ID
定义: 每个连接的唯一标识符。
值: 整数,例如 1242878。这个ID可以用于 KILL ID命令来终止特定的查询或连接。 -
USER
定义: 表示正在执行该查询的用户名。
值:
•数据库用户名,例如 i-datas。
•如果显示为 unauthenticated user,表示这个连接还没有成功进行身份验证。
•如果显示为 system user,表示这是MySQL内部的线程。 -
HOST
定义: 连接到MySQL服务器的客户端的主机信息。
值:
•形式为 主机名:端口号,例如 ecs-compute.hwclouds-dns.com:56916。
•如果连接来自本地主机,可能会显示 localhost 或 127.0.0.1。 -
DB
定义: 该连接当前选择的数据库。
值:
•数据库名称,例如 ibedata。
•如果显示为空,表示该连接还没有选择任何数据库。 -
COMMAND
定义: 当前连接正在执行的命令类型。
常见值:
•Sleep: 连接空闲状态,等待新的请求。
•Query: 正在执行一个SQL查询。
•Execute: 正在执行准备好的语句。
•Connect: 连接到服务器时的初始状态。
•Close stmt: 关闭准备好的语句。
•Prepare: 准备执行一个SQL语句。
•Killed: 连接已被终止,等待清理。
•Quit: 连接正在关闭。 -
TIME
定义: 连接处于当前状态的持续时间,单位为秒。
值: 整数,例如 265。时间越长可能意味着查询执行时间长或者连接长时间处于空闲状态。 -
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