栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL死锁问题如何解决?背诵版

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL死锁问题如何解决?背诵版

MySQL的死锁:
两个或两个以上的事务因为互相竞争对方的资源而导致循环等待的现象成为死锁.
如何解决死锁:
可以使用show engine innodb status语句去查看sql语句状态.然后根据对应的死锁sql找到占用的锁.
比如说: 事务A占用了a表的锁,事务B占用了b表的锁,如果此刻事务A要求占用b表的锁就得让事务b去释放b表的锁,但如果这个时候事务b也要求占用事务a的锁,就得要求事务a去释放占用a表的锁,这样子大家都循环等待,就造成了死锁.这个时候我们应该顺序让他们去占用锁,让事务ab顺序占用a锁,顺序占用b锁,这样子造成的问题无非就是哪个事务先占用锁的问题,并不会产生循环等待的情况
还比如: 在事务A执行任务的时候产生了间隙锁(-无穷,2),事务b产生了间隙锁(1,+无穷),这个时候如果事务a去执行更新3的操作,就得要求事务b去释放锁,而事务b要去执行更新0的时候就得要求事务a去释放锁.造成了互相等待的局面,这个时候就要去尝试更改逻辑删除间隙锁,或者去更改间隙锁的范围.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/952962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号