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

怎样解决MySQL数据库在RR隔离级别下容易产生幻读的问题

96次阅读
没有评论

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

这篇文章将为大家详细讲解有关怎样解决 MySQL 数据库在 RR 隔离级别下容易产生幻读的问题,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

PartⅠ 问题回顾

幻读的定义:幻读是指某个事务读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前事务再次读取该范围内的记录时就会产生幻行。

举一个例子,user 表中 id 是主键索引,T1 是主事务:

T2 是干扰事务:

Step1:T1 开始,并检查 user 表中是否有 id= 1 的记录。

Step2:T2 开始,插入 id 为 1 的记录且成功执行。

Step3:T1 查到没有 id= 1 的记录就开始插入 id= 1 的记录,但是失败了(主键冲突)。

Step4:T1 不能接受现实又查了一遍是否存在 id= 1 的记录,发现的确没有,彻底崩溃 …

从第四步我们可以看出,在主事务执行 commit 之前,不管再查多少次,都无法获取到 id= 1 的这条记录,因为此时它已经产生幻读了。

Part Ⅱ 解决方案

要解决幻读的问题有两种方案,一种是采用 SERIALIZABLE 数据隔离级别,但是这种方案会强制把所有事务排序,来达到事务之间不互相冲突产生幻读的问题,当事务并发高的时候,很容易产生大量超时和锁竞争的情况,所以一般不太建议采用这种方案。另一种方案是采用在 RR 数据隔离级别下,手动给 select 操作加上 x 锁(排它锁)或者 s 锁(共享锁),下面就具体介绍一下 x 锁和 s 锁。

1. 什么是共享锁和排它锁

共享锁(SELECT … LOCK IN SHARE MODE)即一个事务获取一条记录共享锁的同时,其他事务也可以获得这条记录的共享锁,但是如果同时有多个事务获得这条记录的共享锁,谁也无法修改这条记录,直到都释放掉共享锁,只剩下一个事务拥有这条记录的锁为止。

排它锁(SELECT … FOR UPDATE)即一个事务获得了一条记录的排它锁的同时,其他事务就不能获得这条记录的共享锁和排它锁,也无法修改这条记录,直到这个事务释放掉锁为止。

2. 相同点和不同点

相同点:一个事务在获得一条记录的共享锁或者排它锁的同时,其他事务都不能修改这条记录,直到这个事务释放掉锁为止。

不同点:排它锁比共享锁多阻塞了其他事务对相同记录的共享锁,但是不影响快照读。

3. 举例说明

共享锁:

排它锁:

Part Ⅲ 

那共享锁和排它锁是否能互相代替呢,这要看具体的场景,像上面两个例子就不行,第一个例子如果用了排它锁就会造成一个用户在操作工会的时候,其他用户就不能获取这条记录共享锁的情况。

第二个例子如果使用共享锁的话,其他事务都能获得 goods 表这条记录的共享锁,会导致谁也更新不了剩余数量这个值的情况。所以共享锁和排它锁都有各自的作用,不能互相替代。

关于怎样解决 MySQL 数据库在 RR 隔离级别下容易产生幻读的问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计1215字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 夜夜夜久久久 | 91丨九色丨首页在线观看 | 久久国产精品亚洲综合 | 日本视频在线免费播放 | 91网站免费在线观看 | 九色九色九色在线综合888 | 国产精品资源在线 | 最近的中文字幕在线看视频 | 日本毛片在线观看 | 久久av无码精品人妻出轨 | 999精品在线观看 | 在线观看偷拍自拍 | 免费在线日韩 | 欧美亚洲欧美日韩中文二区 | 无套内谢孕妇毛片免费看 | 无码人妻一区二区三区在线视频 | 国产亚洲欧美精品久久久 | 亚洲国产欧美日韩一区二区三区 | 久久精品94精品久久精品 | a级毛片100部免费观看 | 亚洲午夜精品 | 欧美日韩性 | 精品国产三级a∨在线欧美 精品国产三级a在线观看 | 亚洲毛片不卡av在线播放一区 | 无码专区丰满人妻斩六十路 | 日本三级黄在线观看 | 久久99亚洲精品一区二区 | 97日日碰人人模人人澡 | 少妇粉嫩小泬喷水视频www | 无码国产福利av私拍 | 无码尹人久久相蕉无码 | 亚洲乱妇熟女爽到高潮的片 | 欧美精品专区免费观看 | 99久久99热久久精品免费看 | 国产精品18久久久久久vr | 人妻无码αv中文字幕久久琪琪布 | 日本a级黄色 | 国产欧美日韩不卡一区二区三区 | 日韩在线视频免费观看 | 国产亚洲精品久久久久久久久动漫 | 日本一级欧美一级中文 |