Mysql关于进程中的死锁和解除锁问题

 更新时间:2023年07月26日 10:53:57   作者:从未完美过  
Mysql 经常会遇到语句或者存储过程长时间没有反应,大概率就是挂掉了,或者死锁了,这篇文章主要介绍了Mysql关于进程中的死锁和解除锁问题,本文给大家介绍的非常详细,需要的朋友可以参考下

什么是死锁

死锁是2+个线程在执行过程中, 因争夺资源而造成的相互等待的现象,若无外力作用,它们将无法推进下去。

死锁产生的4个必要条件

互斥条件

指进程对所分配的资源进行排他性使用,即一段时间内某资源只有一个进程占用,其他的进程请求资源只能等待,直至被占有资源的进程得到释放。

请求和保留条件

指进程至少保持占用一个资源,但又提出新的资源请求,而该资源正被其他进程占用,此时请求进程阻塞,但对以获得的其他资源保持不放。

不剥夺条件

指进程已获得的资源,在未使用完之前,不能剥夺,只能使用完时由自己释放。

环路等待条件

值发生死锁时,必然存在一个进程占用资源的环形链,即进程集合(P0,P1,P2, … Pn),P0等待P1资源释放,P1等待P2资源释放,P3等待 … Pn等待P0资源释放。
对应到mysql中存在的互斥锁,和事务对资源使用排他锁占用,并且事务不结束不会释放,事务之间可会出现资源之间的相互占用,相互等待,因此看来,mysql中是会出现死锁的。

Mysql关于进程中的死锁和解除锁

Mysql 经常会遇到语句或者存储过程长时间没有反应,大概率就是挂掉了,或者死锁了。

可通过如下几种方式来查看当前进程状态

1. 查询数据库所有的进程状态

SHOW PROCESSLIST
SELECT * FROM information_schema.PROCESSLIST;

2. 查询在锁的事务

SELECT * FROM information_schema.INNODB_TRX;

3. 查看是否锁表

show OPEN TABLES where In_use > 0;

4. 观察事务内锁状态

show engine innodb status

 status 里面就有对应的结果,具体结果可以搜索了。

最后,杀死进程

查询到上面的进程id,可以用如下命令结束进程

KILL 进程id

KILL  38233

到此这篇关于Mysql关于进程中的死锁和解除锁的文章就介绍到这了,更多相关Mysql死锁和解除锁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql中的join和where优先级顺序解读

    mysql中的join和where优先级顺序解读

    这篇文章主要介绍了mysql中的join和where优先级顺序解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 如何使用MySQL Explain 分析 SQL 执行计划

    如何使用MySQL Explain 分析 SQL 执行计划

    MySQL 提供的 EXPLAIN 工具能够帮助我们深入了解查询语句的执行过程、索引使用情况以及潜在的性能瓶颈,本文将详细介绍如何使用 EXPLAIN 分析 SQL 执行计划,并探讨其中各个重要字段的含义以及优化建议,感兴趣的朋友一起看看吧
    2025-04-04
  • mysql中profile的使用方法教程

    mysql中profile的使用方法教程

    这篇文章主要给大家介绍了关于mysql中profile的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • phpMyAdmin下将Excel中的数据导入MySql的图文方法

    phpMyAdmin下将Excel中的数据导入MySql的图文方法

    使用phpMyAdmin将Excel中的数据导入MySql,需要将execl导入到mysql数据库的朋友可以参考下。
    2010-08-08
  • mysql 5.6.14 win32 解压缩版(免安装)安装配置教程

    mysql 5.6.14 win32 解压缩版(免安装)安装配置教程

    这篇文章主要介绍了mysql 5.6.14 win32 解压缩版(免安装)安装配置教程,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • CentOS 7下使用rpm包安装mysql 5.7.18

    CentOS 7下使用rpm包安装mysql 5.7.18

    这篇文章主要为大家详细介绍了CentOS 7下使用rpm包安装mysql 5.7.18的教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 关于SQL的cast()函数解析

    关于SQL的cast()函数解析

    这篇文章主要介绍了关于SQL的cast()函数解析,CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型,需要的朋友可以参考下
    2023-04-04
  • Mac 下 MySQL5.7.22的安装过程

    Mac 下 MySQL5.7.22的安装过程

    这篇文章主要介绍了Mac 下 MySQL5.7.22的安装过程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • MySQL中触发器入门简单实例与介绍

    MySQL中触发器入门简单实例与介绍

    本文章来mysql初学者介绍在mysql怎么创建触发器及触发器在mysql执行顺序,下面我来给大家详细介绍
    2013-08-08
  • mysql 8.0.17 安装配置图文教程

    mysql 8.0.17 安装配置图文教程

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

最新评论