暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 - 数据库管理语句 - SHOW 语句 - SHOW PROCESSLIST 语句

林员外聊编程 2021-04-11
151
SHOW PROCESSLIST 语句
 
SHOW [FULL] PROCESSLIST
复制
 
MySQL 进程列表指示服务器中执行的线程集当前正在执行的操作。SHOW PROCESSLIST 语句是获取进程信息的一个来源。
 
注意
 
MySQL 8.0.22 开始,可以基于 Performance Schema processlist 表来替代 SHOW PROCESSLIST 的实现,与默认的 SHOW PROCESSLIST 实现不同,它不需要互斥锁,并且具有更好的性能。
 
如果您拥有 PROCESS 权限,则可以看到所有线程,甚至是属于其他用户的线程。否则(没有 PROCESS 权限),非匿名用户可以访问关于自己线程的信息,而不能访问其他用户线程信息,匿名用户不能访问线程信息。
 
如果没有 FULL 关键字,SHOW PROCESSLIST 只在 Info 字段中显示每条语句的前100个字符。
 
如果您收到错误消息 “too many connections”,并想知道发生了什么,此时 SHOW PROCESSLIST 语句非常有用。MySQL 保留一个额外的连接,供具有 CONNECTION_ADMIN 权限(或不推荐使用的 SUPER 权限)的帐户使用,以确保管理员始终能够连接并检查系统(假设您没有将此权限授予所有用户)。
 
可以使用 KILL 语句终止线程。
 
SHOW PROCESSLIST 输出示例:
 
mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host:
db: NULL
Command: Connect
Time: 1004
State: Has read all relay log; waiting for the slave
I/O thread to update it
Info: NULL
*************************** 3. row ***************************
Id: 3112
User: replikator
Host: artemis:2204
db: NULL
Command: Binlog Dump
Time: 2144
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
*************************** 4. row ***************************
Id: 3113
User: replikator
Host: iconnect2:45781
db: NULL
Command: Binlog Dump
Time: 2086
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
*************************** 5. row ***************************
Id: 3123
User: stefan
Host: localhost
db: apollon
Command: Query
Time: 0
State: NULL
Info: SHOW FULL PROCESSLIST
复制
 
SHOW PROCESSLIST 输出包含以下列:
 
 Id
 
连接标识符。这与显示在 INFORMATION_SCHEMA PROCESSLIST 表的 ID 列、显示在 Performance Schema threads 表的 PROCESSLIST_ID 列,以及由线程内的 CONNECTION_ID() 函数返回的值相同。
 
 User
 
执行语句的 MySQL 用户。值为 system user 是指由服务器生成的用于在内部处理任务的非客户机线程,例如,延迟数据行处理程序线程或在副本主机上使用的 I/O SQL 线程。对于 system user,在 Host 列中没有指定主机。unauthenticated user 是指已与客户端连接关联但尚未对其进行客户端用户身份验证的线程。event_scheduler 是指监视器调度事件的线程。
 
注意
 
User 值为 system user 不同于具有 SYSTEM_USER 权限。前者表示内部线程。后者区分系统用户和常规用户帐户类别。
 
 Host
 
执行语句的客户端的主机名(system user 除外,系统用户没有主机)。TCP/IP 连接的主机名以 host_name:client_port 格式展示,以便于确定哪个客户端正在做什么。
 
 db
 
线程的默认数据库,如果未选择任何数据库,则为 NULL
 
 Command
 
线程代表客户端执行的命令类型,如果会话空闲,则为 Sleep。此列的值对应于客户端/服务器协议的 COM_xxx 命令和 Com_xxx 状态变量。
 
 Time
 
线程处于当前状态的时间(秒)。对于副本 SQL 线程,该值是上次复制事件的时间戳与副本主机的实时时间之间的秒数。
 
 State
 
指示线程正在执行的操作、事件或状态。
 
大多数状态对应于非常快速的操作。如果一个线程在给定状态下停留了很多秒,那么可能有出了问题,需要进行调查。
 
 Info
 
线程正在执行的语句,如果线程没有在执行语句,则返回 NULL。该语句可能是发送到服务器的语句,如果该语句执行其他语句,则可能是最内部的语句。例如,如果 CALL 语句执行存储过程,此存储过程正在执行 SELECT 语句,Info 值将显示 SELECT 语句。
 
 
 
官方文档:
https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html
 
 

文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论