在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MySQL是怎么处理死锁的

117次阅读
没有评论

共计 1330 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 MySQL 是怎么处理死锁的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

一、什么是死锁

官方定义如下:两个事务都持有对方需要的锁,并且在等待对方释放,并且双方都不会释放自己的锁。

这个就好比你有一个人质,对方有一个人质,你们俩去谈判说换人。你让对面放人,对面让你放人。

MySQL 是怎么处理死锁的

二、为什么会形成死锁

看到这里,也许你会有这样的疑问,事务和谈判不一样,为什么事务不能使用完锁之后立马释放呢?居然还要操作完了之后一直持有锁?这就涉及到 MySQL 的并发控制了。

MySQL 的并发控制有两种方式,一个是 MVCC,一个是两阶段锁协议。那么为什么要并发控制呢?是因为多个用户同时操作 MySQL 的时候,为了提高并发性能并且要求如同多个用户的请求过来之后如同串行执行的一样(可串行化调度)。具体的并发控制这里不再展开。咱们继续深入讨论两阶段锁协议。

两阶段锁协议(2PL)

官方定义:

两阶段锁协议是指所有事务必须分两个阶段对数据加锁和解锁,在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。

对应到 MySQL 上分为两个阶段:

扩展阶段(事务开始后,commit 之前):获取锁

收缩阶段(commit 之后):释放锁

就是说呢,只有遵循两段锁协议,才能实现 可串行化调度。

但是两阶段锁协议不要求事务必须一次将所有需要使用的数据加锁,并且在加锁阶段没有顺序要求,所以这种并发控制方式会形成死锁。

三、MySQL 如何处理死锁?

MySQL 有两种死锁处理方式:

等待,直到超时(innodb_lock_wait_timeout=50s)。

发起死锁检测,主动回滚一条事务,让其他事务继续执行(innodb_deadlock_detect=on)。

由于性能原因,一般都是使用死锁检测来进行处理死锁。

死锁检测

死锁检测的原理是构建一个以事务为顶点、锁为边的有向图,判断有向图是否存在环,存在即有死锁。

回滚

检测到死锁之后,选择插入更新或者删除的行数最少的事务回滚,基于 INFORMATION_SCHEMA.INNODB_TRX 表中的 trx_weight 字段来判断。

四、如何避免发生死锁

收集死锁信息:

利用命令 SHOW ENGINE INNODB STATUS 查看死锁原因。

调试阶段开启 innodb_print_all_deadlocks,收集所有死锁日志。

减少死锁:

使用事务,不使用 lock tables。

保证没有长事务。

操作完之后立即提交事务,特别是在交互式命令行中。

如果在用 (SELECT … FOR UPDATE or SELECT … LOCK IN SHARE MODE),尝试降低隔离级别。

修改多个表或者多个行的时候,将修改的顺序保持一致。

创建索引,可以使创建的锁更少。

最好不要用 (SELECT … FOR UPDATE or SELECT … LOCK IN SHARE MODE)。

如果上述都无法解决问题,那么尝试使用 lock tables t1, t2, t3 锁多张表

看完了这篇文章,相信你对“MySQL 是怎么处理死锁的”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1330字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 香蕉久久网 | 久久免费99精品久久久久久 | 欧美精品综合一区二区三区 | 九九国产视频 | 草草网 | 在线观看特色大片免费网站 | 最新91精品老司机在线 | 久久精品国产网红主播 | 亚洲高清在线不卡中文字幕网 | 成人丝袜激情一区二区 | 亚洲视频色图 | 真多人做人爱视频高清免费 | 四虎影院在线播放视频 | av天堂午夜精品一区二区三区 | 日韩理论午夜无码 | 成人第四色 | 91视频国内 | 国产偷人爽久久久久久老妇app | 日日夜夜草 | 精品少妇高潮 蜜臀 | 国产剧情麻豆女教师在线观看 | 亚洲一区二区在线 | 精久国产一区二区三区四区 | 另类国产精品一区二区 | 亚洲av色香蕉一区二区 | 亚洲国产综合精品中文第一区 | 大地资源网在线观看免费官网 | 欧美日韩免费播放一区二区 | 久久zyz资源站无码中文动漫 | 亚洲av第一成肉网 | 精品乱码久久久久久中文字幕 | 中文字幕影片免费在线观看 | 欧美特黄特色三级视频在线观看 | 久久91视频| 日韩在线视频线视频免费网站 | 中文字幕一区二区三区在线观看 | 久久精品无码一区二区www | 中文字幕在线国产 | 国产中文欧美 | 婷婷四虎东京热无码群交双飞视频 | 欧美黄色免费大片 |