mysql案例~阻塞会话查杀

一 简介 

    本文介绍各种阻塞会话的查杀

二 MDL锁DDL查杀

    SELECT concat('kill ', i.trx_mysql_thread_id, ';') FROM information_schema.innodb_trx i,(SELECT MAX(time) AS max_time FROM information_schema.processlist WHERE state = 'Waiting for table metadata lock' AND (info LIKE 'alter%' OR info LIKE 'create%' OR info LIKE 'drop%' OR info LIKE 'truncate%' OR info LIKE 'rename%')) p WHERE timestampdiff(second, i.trx_started, now()) > p.max_time;

    关于未提交事务的说明

    1 一旦未提交事务执行完成,是无法通过innodb_trx查到具体的SQL

    2 此SQL生成的KILL SESSION 是查询到DDL之前的未提交事务,kill后就可以使DDL正常执行了,最好看看具体的操作,防止误杀

三 超60S查询查杀

  1    SELECT CONCAT('kill ',id,';') FROM `information_schema`.`PROCESSLIST` where Command='Query' and time > 60 INTO OUTFILE '/tmp/kill_id.sql';
       source /tmp/kill_id.sql 

  2   设置max_execution_time=60000 针对普通查询自动查杀,但是对于存储过程类的无效

四 Sleep睡眠查杀

      SELECT CONCAT('kill ',id,';') FROM `information_schema`.`PROCESSLIST` where Command='Sleep and time > 60 and user not in ('root') INTO OUTFILE '/tmp/kill_id.sql';

      source /tmp/kill_id.sql 


posted @   开心的蛋黄派  阅读(259)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
历史上的今天:
2018-06-29 k8s系列~docker mysql
点击右上角即可分享
微信分享提示