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