MySQL 死锁的恢复

MySQL 死锁的恢复

  1. 死锁产生的原因
    • 怎么产生的死锁其实是一个复杂的问题, 但归根结底就是不同的事务锁住了不同的资源, 不能释放, 又在请求其他的资源, 其他的资源被另一个事务占用, 又在等待该事务释放资源, 互相等待, 互相又无法释放资源给其他事物, 造成死锁.
  2. 死锁的恢复
    • 重启服务器
      这个方法很直接, 但如果是线上环境就不好办了, 重启很麻烦.
    • 断开服务器与数据库的所有连接
    select replace(group_concat(concat('KILL ',id,';')), ',', '') from information_schema.processlist
            where user='card' and db = 'card' order by 1;
    
    -- 找到 card 数据库 card 用户的所有连接, 然后把这个 id 和 kill 连起来, 然后得到一个 SQL语句, 再次执行这个新生成SQL, 会把当前用户的所有连接杀掉, 死锁会恢复, 不用重启服务器.
原文地址:https://www.cnblogs.com/zh1903/p/14031934.html