• 售前

  • 售后

热门帖子
入门百科

Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)

[复制链接]
精力束台经 显示全部楼层 发表于 2021-10-25 19:27:03 |阅读模式 打印 上一主题 下一主题
在使用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技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作