暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【微课】MySQL解除死锁

数舟 2021-07-26
361





在MySQL中,因为SQL操作导致的行级锁有:DML锁、DDL锁。


其中DML锁是因为SQL执行异常,导致更新事务无法提交,如更新语句中的查询语句无索引,造成全表扫描而阻塞。


而DDL锁则是因为表结构变更时,遇到慢查询,造成等待。




不管是哪种锁,一般在排查时会涉及到3张表。


information_schema.innodb_trx:记录innodb引擎的事务信息。


表结构


information_schema.innodb_locks:记录innodb引擎中锁信息。


表结构


information_schema.innodb_lock_waits:记录innodb引擎中因为锁而产生等待的事务信息。


表结构






但通常,我们会直接查询一个视图innodb_lock_waits,它由前面三张表的部分数据组成,记录innodb引擎中正在等待锁的进程。


    select sql_kill_blocking_connection,blocking_pid,waiting_pid from sys.innodb_lock_waits;
    复制


    执行命令


    查询到被锁住的SQL后,执行KILL命令终止即可。


      KILL <ID>;
      复制


      但这种方式简单粗暴,可能会造成误杀,但在测试环境中很高效,你Get到了吗?


      那本期的数舟微课就先分享到这里,至于如何能够找到DDL、DML锁的源头,然后精准解除锁状态?我们下期再会!


      企业常用Hive SQL配置


      提了这么多年的面向对象,你真的懂它的含义吗?


      爆肝一周后,HUE也可以一键编译安装了?


      各类镜像源,专治各种下载缓慢


      大数据一键安装脚本升级了!





      扫描二维码

      获取更多精彩

      数 舟



      文章转载自数舟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论