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排序优化详细解析

    MySQL排序优化详细解析

    这篇文章主要介绍了MySQL排序优化详细解析,MySQL有两种方式生成有序的结果:1.通过排序操作;2.按索引顺序扫描,如果EXPLAIN出来的type列的值为"index",则说明使用了索引扫描来做排序,需要的朋友可以参考下
    2024-01-01
  • Mysql如何优化查询速度

    Mysql如何优化查询速度

    这篇文章主要介绍了Mysql如何优化查询速度问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 提高MySQL中数据装载效率

    提高MySQL中数据装载效率

    很多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当。
    2009-11-11
  • MySQL 字段默认值该如何设置

    MySQL 字段默认值该如何设置

    这篇文章主要介绍了MySQL 字段默认值该如何设置,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-02-02
  • MySql事务原理介绍及特性

    MySql事务原理介绍及特性

    事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的
    2022-09-09
  • 解决mysql的赋权操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION问题

    解决mysql的赋权操作之GRANT ALL PRIVILEGES ON *.*

    这篇文章主要介绍了解决mysql的赋权操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION问题,本文给大家分享两种情况分析分享解决方案,感兴趣的朋友一起看看吧
    2022-11-11
  • mysqli多查询特性 实现多条sql语句查询

    mysqli多查询特性 实现多条sql语句查询

    mysqli相对于mysql有很多优势,mysqli连接数据库和mysqli预处理prepare使用,不仅如此,mysqli更是支持多查询特性
    2012-12-12
  • 如何解决MySQL5升级为MySQL8遇到的问题my.ini

    如何解决MySQL5升级为MySQL8遇到的问题my.ini

    这篇文章主要介绍了如何解决MySQL5升级为MySQL8遇到的问题my.ini,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • CentOS7环境下源码安装MySQL5.7的方法

    CentOS7环境下源码安装MySQL5.7的方法

    这篇文章主要介绍了CentOS7环境下源码安装MySQL5.7的方法,结合实例形式分析了CentoS7环境下MySQL5.7的下载、编译、安装、设置等相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • 深入探讨MySQL分词查询与全文索引技术

    深入探讨MySQL分词查询与全文索引技术

    中小项目中的一些简单的分词搜索功能,其实可以试试 MySQL 分词查询,本文将深入探讨 MySQL 的分词查询技术,从基础使用到中文处理全面解析,感兴趣的可以了解一下
    2025-07-07

最新评论