版权声明:chaizepeng https://blog.csdn.net/chaizepeng/article/details/84838403
1、登陆到mysql服务器
Mysql –h ip –u 用户名 –p 密码;
2、检查当前连接的线程
show full processlist 或
show processlist 或
selelct * from information_schema.processlist;
Id:线程标识
User:当前用户
Host:sql的来源,ip和port
Db:进程连接的数据库名
Command:当前连接执行的命令,一般是sleep、connect和query,当sleep进程很多时,容易导致数据库挂死
Time:当前连接状态持续时间(秒)
State:当前连接sql的状态,例如:查询sql可能需要经过copying to tmp table,Sorting result,Sending data等状态
state常见状态如下:
Checking table :检查数据表
Closing tables:正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表,如果这个状态一直持续,可以考虑一下是否磁盘已满或者操作磁盘进程太多
Connect Out:
Copying to tmp table on disk:正在将临时存储到内存的数据copy到磁盘
Creating tmp table:正在创建临时表
deleting from main table:执行多表删除
Flushing tables:等待其他线程关闭数据表
Killed:kill掉某进程
Locked:被其他查询锁住了
Sending data:正在处理select查询的数据,并试图将结果发送到客户端
Sorting for group:正在为group进行排序
Sorting for order:正在为order进行排序,持续时间过长建议添加order by字段索引
Opening tables:正在尝试打开一张表
Removing duplicates:正在执行一个 SELECT DISTINCT 方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端。
Reopen table:试图重新打开表
Repair by sorting:修复指令正在排序以创建索引
Repair with keycache:修复指令正在利用索引缓存一个一个地创建新索引。它会比 Repair by sorting 慢些
Searching rows for update:将符合条件的数据找出来以备更新
Sleeping:正在等待接受新请求
System lock:正在等待取得一个外部的系统锁
Upgrading lock:正在尝试取得一个锁表以插入新记录
Updating:正在搜索匹配的上的,可以修改的数据
User Lock:正在等待 GET_LOCK()
Waiting for tables:该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构
waiting for handler insert:INSERT DELAYED 已经处理完了所有待处理的插入操作,正在等待新的请求
Info:sql内容
3、杀掉耗资源的线程
KILL [CONNECTION | QUERY] processlist_id
例如:kill 67169159 -- 默认修饰符是CONNECTION