web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. seo教程
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站

MySQL如何处理死锁?MySQL死锁是怎么形成的?

239 ℃
     

当MySQL中出现死锁时,InnoDB存储引擎的默认行为是回滚一个事务,从而释放死锁。InnoDB存储引擎检测到死锁后,会选择一个事务进行回滚,比如线程1的事务,然后线程2的事务可以继续执行。

MySQL死锁代码示列:

sql
# 线程1
START TRANSACTION;
UPDATE table1 SET col = 1 WHERE id = 1; 
# 等待线程2释放锁

# 线程2 
START TRANSACTION;
UPDATE table1 SET col = 1 WHERE id = 2;
# 等待线程1释放锁  

# 死锁产生,线程1等待线程2,线程2等待线程1

线程1会收到类似如下错误代码:

Deadlock found when trying to get lock; try restarting transaction

//提示发现死锁,事务被回滚。

MySQL死锁的四个必要条件:

1、互斥:一个资源一次只能被一个事务使用。

2、请求并保持:一个事务已经保持了一个资源,并请求一个新的资源。

3、不可剥夺:在交易没有被自愿释放的情况下,持有的资源不能被其他交易强行拿走。

4、循环等待:在两个或多个事务之间形成一个等待链。

避免僵局的措施:

1、确保所有事务以相同的顺序请求锁。

2、避免一个事务请求其他事务持有的锁。

3、锁定时间越短越好。

4、尽量避免更新多个表的语句,可以拆分成多个语句分别更新。

MySQL语法自动提交与手动提交的基本语法示例

MySQL语法创建一个包含ibd文件的数据表基本操作

MySQL语法中ibd文件的存储代码示例

MySQL语法中创建两个相关表代码示例

Oracle和DB2的SQL数据库语法的区别(查询、插入、删除、更新)

标签: MySQL死锁

上面是“MySQL如何处理死锁?MySQL死锁是怎么形成的?”的全面内容,想了解更多关于 mysql 内容,请继续关注web建站教程。

当前网址:https://ipkd.cn/webs_11860.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

当前位置: 网站首页 > mysql
本文共计558个字,预计阅读时长4分钟
生活小工具,收录了80多款小工具
上一篇: 基于JavaScrip的web动画库——GSAP
下一篇: 免费商用中文字体——优设鲨鱼菲特健康体
x 打工人ai神器