当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、尽量避免更新多个表的语句,可以拆分成多个语句分别更新。
一款免费开源的 JavaScript 数据库——PouchDB
上面是“MySQL如何处理死锁?MySQL死锁是怎么形成的?”的全面内容,想了解更多关于 mysql 内容,请继续关注web建站教程。
当前网址:https://ipkd.cn/webs_11860.html
workflows工作流
一只黑色的小猫在童话森林里嗅着一朵发光的外星花
一个骷髅海盗船长ComfyUI工作流
一朵由琥珀制成的孤独美丽的玫瑰
大黄蜂空中决战ComfyUI工作流
一块慕斯蛋糕ComfyUI工作流
一个迷人的女人ComfyUI工作流
图生图工作流:一键转换成高清动漫照片
乒乓卡通3d人物
猜你喜欢
声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

利用js+css3做一个小鱼游泳特效
会议人员60s签到倒计时插件
制作一个好玩的倒计时
iframe开发admin后台
利用CSS3代码编写45款按钮效果
css3画弹珠,可以滚动!
利用CSS3做一个星级评分样式
html5如何3D立方体旋转特效







