• 售前

  • 售后

热门帖子
入门百科

Mysql利用kill下令办理死锁问题(杀死某条正在实行的sql语句)

[复制链接]
宁师我蚜 显示全部楼层 发表于 2021-10-25 19:27:25 |阅读模式 打印 上一主题 下一主题
在利用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL下令的语法格式如下:
  1. KILL [CONNECTION | QUERY] thread_id
复制代码
每个与mysqld的连接都在一个独立的线程里运行,您可以利用SHOW PROCESSLIST语句查看哪些线程正在运行,并利用KILL thread_id语句终止一个线程。
KILL允许自选的CONNECTION或QUERY修改符:KILL CONNECTION与不含修改符的KILL一样:它会终止与给定的thread_id有关的连接。KILL QUERY会终止连接当前正在实行的语句,但是会保持连接的原状。
假如您拥有PROCESS权限,则您可以查看全部线程。假如您拥有超等管理员权限,您可以终止全部线程和语句。否则,您只能查看和终止您自己的线程和语句。您也可以利用mysqladmin processlist和mysqladmin kill下令来检查和终止线程。
起首登录MySQL,然后利用: show processlist; 查看当前mysql中各个线程状态。
  1. mysql> show processlist;
  2. +------+------+----------------------+----------------+---------+-------+-----------+---------------------  
  3. | Id  | User | Host         | db       | Command | Time | State   | Info
  4. +------+------+----------------------+----------------+---------+-------+-----------+---------------------  
  5. | 7028 | root | ucap-devgroup:53396 | platform    | Sleep  | 19553 |      | NULL  
  6. | 8352 | root | ucap-devgroup:54794 | platform    | Sleep  | 4245 |      | NULL
  7. | 8353 | root | ucap-devgroup:54795 | platform    | Sleep  |   3 |      | NULL
  8. | 8358 | root | ucap-devgroup:62605 | platform    | query  | 4156 | updating | update t_shop set |
复制代码
以上显示出当前正在实行的sql语句列表,找到消耗资源最大的那条语句对应的id.
然后运行kill下令,下令格式如下:  
  1. kill id;
  2. - 示例:
  3. kill 8358
复制代码
杀掉即可。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作