服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|

服务器之家 - 数据库 - Mysql - Mysql查看死锁与解除死锁的深入讲解

Mysql查看死锁与解除死锁的深入讲解

2021-03-13 18:390xBoo Mysql

这篇文章主要给大家介绍了关于Mysql查看死锁与解除死锁的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

前段时间遇到了一个mysql 死锁相关的问题,整理一下。

问题描述:mysql 的修改语句似乎都没有生效,同时使用mysql gui 工具编辑字段的值时会弹出异常。

Mysql查看死锁与解除死锁的深入讲解

什么是死锁

在解决mysql 死锁的问题之前,还是先来了解一下什么是死锁。

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程。

死锁的表现

死锁的具体表现有两种:

mysql 增改语句无法正常生效 使用mysql gui 工具编辑字段的值时,会出现异常。 如何避免死锁

阻止死锁的途径就是避免满足死锁条件的情况发生,为此我们在开发的过程中需要遵循如下原则:

1.尽量避免并发的执行涉及到修改数据的语句。

2.要求每一个事务一次就将所有要使用到的数据全部加锁,否则就不允许执行。

3.预先规定一个加锁顺序,所有的事务都必须按照这个顺序对数据执行封锁。如不同的过程在事务内部对对象的更新执行顺序应尽量保证一致。

查看死锁

mysql 查询是否存在锁表有多种方式,这里只介绍一种最常用的。

1. 查看正在进行中的事务

?
1
select * from information_schema.innodb_trx

可以看到 进程id为3175 的事务在锁住了,而另一个id为3173的事务正在执行,但是没有提交事务。

Mysql查看死锁与解除死锁的深入讲解

2. 查看正在锁的事务

?
1
select * from information_schema.innodb_locks;

Mysql查看死锁与解除死锁的深入讲解

3. 查看等待锁的事务

?
1
select * from information_schema.innodb_lock_waits;

Mysql查看死锁与解除死锁的深入讲解

4. 查询是否锁表

?
1
show open tables where in_use > 0;

Mysql查看死锁与解除死锁的深入讲解

在发生死锁时,这几种方式都可以查询到和当前死锁相关的信息。

5. 查看最近死锁的日志

?
1
show engine innodb status

Mysql查看死锁与解除死锁的深入讲解

解除死锁

如果需要解除死锁,有一种最简单粗暴的方式,那就是找到进程id之后,直接干掉。

查看当前正在进行中的进程

?
1
2
3
4
show processlist
 
// 也可以使用
select * from information_schema.innodb_trx;

这两个命令找出来的进程id 是同一个。

杀掉进程对应的进程 id

?
1
kill id

验证(kill后再看是否还有锁)

?
1
show open tables where in_use > 0;

参考链接

mysql 查看表和解锁表

mysql 死锁是什么?

到此这篇关于mysql查看死锁与解除死锁的文章就介绍到这了,更多相关mysql查看死锁与解除死锁内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://segmentfault.com/a/1190000038352601

延伸 · 阅读

精彩推荐
  • MysqlMysql表,列,库增删改查问题小结

    Mysql表,列,库增删改查问题小结

    下面是我总结的一些基础的sql知识,方便以后使用,需要的朋友参考可以参考下 ...

    whiteme1392020-08-03
  • MysqlMySql索引使用策略分析

    MySql索引使用策略分析

    这篇文章主要介绍了MySql索引使用策略分析,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下...

    CoolYYD4872021-03-05
  • MysqlMySQL DELETE语法使用详细解析

    MySQL DELETE语法使用详细解析

    此文章主要讲述的是MySQL DELETE语法的详细解析,以及一些在实际操作中值得我们大家注意的相关事项的描述,以下就是正文的主要内容 ...

    MYSQL教程网5382019-12-21
  • MysqlMySQL5.6.22安装配置方法图文教程

    MySQL5.6.22安装配置方法图文教程

    这篇文章主要为大家详细介绍了MySQL5.6.22安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    傻丫头与科技3072020-08-20
  • Mysql初学者从源码理解MySQL死锁问题

    初学者从源码理解MySQL死锁问题

    这篇文章主要讲的是如何通过调试 MySQL 源码,知道一条 SQL 真正会拿哪些锁,不再抓虾,瞎猜或者何登成大神没写过的场景就不知道如何处理了,下面小编...

    挖坑的张师傅2652020-09-28
  • MysqlMySQL中随机生成固定长度字符串的方法

    MySQL中随机生成固定长度字符串的方法

    在MySQL中有时需要随机生成数字或字符串,随机生产数字可直接使用rand()函数,但是要随机生成字符串就比较麻烦。 ...

    mysql教程网5392019-11-12
  • Mysqlmysql中如何判断当前是字符 mysql判断字段中有无汉字

    mysql中如何判断当前是字符 mysql判断字段中有无汉字

    这篇文章主要介绍了mysql如何判断字段中有无汉字的方法,使用length与char_length两个函数就可以完成 ...

    MYSQL教程网3422020-03-11
  • MysqlMySQL基础之MySQL 5.7 新增配置

    MySQL基础之MySQL 5.7 新增配置

    mysql数据库性能非常高,运行速度非常快,接下来通过本文给大家介绍MySQL 5.7 新增配置,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧...

    pursuer.chen2192020-06-22