1、查询线程及相关信息

show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程 外, 其他用户都只能看到自己正在运行的线程 ,看不到其它用户正在运行的线程。

除非单独个这个用户赋予了 PROCESS 权限。

单独给activiti用户授PROCESS权限,(授权后需要退出重新登录)

show processlist 显示的信息都是来自MySQL系统库 i nformation_schema 中的 processlist 表。所以使用下面的查询语句可以获得相同的结果:

select * from information_schema.processlist;

进程信息也可从 performance_schema.threads 表中获得。但是,访问threads不需要互斥锁,对服务器性能影响最小。 information_schema.processlist show processlist 由于需要互斥锁而具有负面的性能后果。performance_schema.threads还显示有关后台线程,哪些信息在information_schema.processlist和show processlist中没有,这意味着performance_schema.threads可以用来监视活动的其他线程信息源。

1.1、各个列的含义:

id 列:唯一连接标识。 SHOW PROCESSLIST 语句所示 Id 的值, performance_schema.threads PROCESSLIST_ID 的值,mysql 线程 connection_id() 函数返回的值,与此值是一样的。

user 列:显示当前用户。如果不是root,这个命令就只显示用户权限范围的sql语句。

值为 system user 代表是服务器内部执行任务的无客户端线程,比如,一个 delayed-row 处理线程或者主从复制的一个 I/O or SQL 线程。对于 system user ,在 Host column不指定任何Host值。值为 unauthenticated user 代表已经建立了连接但是客户端用户还没有认证通过的线程。值为 event_scheduler 代表监控 scheduled events 的线程。

host 列:显示这个语句是从哪个ip的哪个端口上发的,可以用来跟踪出现问题语句的用户。

db 列:显示这个进程目前连接的是哪个数据库。如果没有指定数据库,则该值为 NULL 。

command 列:显示此刻该线程正在执行的命令,一般取值为 休眠(sleep) 查询(query) 连接(connect)

time 列:显示这个状态持续的时间,单位是秒。

state 列:显示使用当前连接的sql语句的状态, 很重要的列 。state描述的是语句执行中的某一个状态。一个sql语句,以查询为例,可能需要经过copying to tmp table、sorting result、sending data等状态才可以完成。

info 列:记录的是线程执行的语句。默认只显示前100个字符,也就是你看到的语句可能是截断了的,要看全部信息,需要使用 show full processlist

1.2、 Command 列的值 详解:

Binlog Dump: 主节点正在将二进制日志 ,同步到从节点。

Change User: 正在执行一个 change-user 的操作。

Close Stmt: 正在关闭一个Prepared Statement 对象。

Connect: 一个从节点连上了主节点。

Connect Out: 一个从节点正在连主节点。。

Create DB: 正在执行一个create-database 的操作。

Daemon: 服务器内部线程,而不是来自客户端的链接。

Debug: 线程正在生成调试信息。

Delayed Insert: 该线程是一个延迟插入的处理程序。

Drop DB: 正在执行一个 drop-database 的操作。

Execute: 正在执行一个 Prepared Statement。

Fetch: 正在从Prepared Statement 中获取执行结果。

Field List: 正在获取表的列信息。

Init DB: 该线程正在选取一个默认的数据库。

Kill : 正在执行 kill 语句,杀死指定线程。。

Long Data: 正在从Prepared Statement 中检索 long data。

Ping: 正在处理 server-ping 的请求。

Prepare: 该线程正在准备一个 Prepared Statement。

ProcessList: 该线程正在生成服务器线程相关信息。。

Query: 该线程正在执行一个语句。

Quit: 该线程正在退出。

Refresh:该线程正在刷表,日志或缓存;或者在重置状态变量,或者在复制服务器信息。

Register Slave: 正在注册从节点。

Reset Stmt: 正在重置 prepared statement。

Set Option: 正在设置或重置客户端的 statement-execution 选项。

Shutdown: 正在关闭服务器。

Sleep : 正在等待客户端向它发送执行语句

Statistics: 该线程正在生成 server-status 信息。

Table Dump: 正在发送表的内容到从服务器。

Time: Unused。

2、按客户端 IP 分组,看哪个客户端的连接数最多

 SELECT
	client_ip,
	count(client_ip) AS client_num 
	( SELECT substring_index( HOST, ':', 1 ) AS client_ip FROM information_schema.PROCESSLIST ) 
 AS connect_info GROUP BY client_ip ORDER BY client_num DESC;

3、查看正在执行的线程,并按 Time 倒排序,看看有没有执行时间特别长的线程

SELECT
	information_schema.PROCESSLIST 
WHERE
	Command != 'Sleep' 
ORDER BY
	Time DESC;

4、查询超过指定时间的线程

找出所有执行时间超过 5 分钟的线程,拼凑出 kill 语句,方便后面查杀 (此处 5分钟 可根据自己的需要调整SQL标红处)

可复制查询结果到控制台,直接执行,杀死堵塞进程

-- 找出所有执行时间超过 5 分钟的线程,拼凑出 kill 语句
SELECT
	concat( 'kill ', id, ';' ) 
	information_schema.PROCESSLIST 
WHERE
	Command != 'Sleep' 
	AND Time > 300 
ORDER BY
	Time DESC;
1、查询线程及相关信息show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程。除非单独个这个用户赋予了PROCESS 权限。单独给activiti用户授PROCESS权限,(授权后需要退出重新登录)show processlist 显示的信息都是来自MySQL系统库 information_schema 中的 processlist 表。所以使用下面的查询语句
一、命令概述: mysql show full process list 用来查看当前线程处理情况,具体 信息 请参考官网:https://dev. mysql .com/doc/refman/5.7/en/show- process list .html show full process list 返回的结果是实时变化的,是对 mysql 链接 执行 的现场快照,所以用来处理突发事件非常有用。 一般用到show process list 或show full process list 都是为了查看当前 mysql 是...
Mysql 主从同步中Binlog Dump线程僵尸 问题 问题 起因 自己开发程序伪造为 mysql 的从服务器,不停重连、以及重启后出现如下错误: too many connections(1040) 在主服务上运行:show process list 发现大量Binlog Dump线程 Mysql 主从同步机制 主库上记录二进制日志,也就是binlog日志。 备库将主库的二进制日志复制
一个 标识,你要kill 一个 语句的时候很有用,用命令杀掉此查询 /*/ mysql admin kill 进程号。 user列   显示单前用户,如果不是root,这个命令就只显示你权限范围内的 sql 语句。 host列   显示这个语句是从哪个ip的哪个端口上发出的。用于追踪出 问题 语句的用户。   显示这个进程目前连接的是哪个数据库。 command列   显示当前连接的 执行 的命令,.
thread_id: 仅在perforamance_schema中使用,是其内部自动增长的计数器,前台和后台线程均有这个id,且thread_id和thread_os_id相关联。 process list id: 一般在 mysql 层使用,跟前台登录会话相关联,是真正的线程ID。 process list id和前台用户直接相关,每创建 一个 登录会话,就会新增 一个 process list id。 2.主要列解释 - command 列,显示当前连接的 执行 的命令,一般就是休眠( sleep ),查询( query ),连接( connect ) - time: 执行 时间,单位秒 - state: 当前连接的 sql 语句的状态,很重要的列,state只是语句 执行 中的某 一个 状态, 这个命令中最关键的就是state列, mysql 列出的状态主要
SHOW [FULL] PROCESS LIST MySQL 进程列表指示服务器内正在 执行 的一组线程当前正在 执行 的操作。该 SHOW PROCESS LIST 声明是过程 信息 的一种来源。有关此声明与其他来源的比较,请参见 过程 信息 来源。 如果您具有 PROCESS 特权,则可以看到所有线程,甚至包括那些属于其他用户的线程。否则( 没有 PROCESS 特权),非匿名用户有权访问有关其自己线程的 信息 ,而其他用户则不能访问线程,并且匿名用户无权访问线程 信息 。 如果 没有 FULL关键字,则 SHOW PROCESS LIST 仅显