针对mysql的RR级别的幻读问题的分析与理解

由于最近被这个幻读的问题给困扰,所以想整明白点,主要就是幻读和不可重复读的区别以及幻读的实际使用场景。翻了一些文章,众说纷纭,我大概抽了几篇我觉得不错的文章来说。

不可重复读主要还是说的update和delete,他针对的是同一次查询的数据,而幻读则针对的是insert(T1第一次查没有这条记录然后准备insert,T2此时insert,T1接着insert,发现无法插入,这就是幻读,另外还有一种针对幻读的解释就是两次查询数量不一致问题)

目前我觉得说的比较清楚的是这篇文章:不扯概念,用例子演示什么是脏读,不可重复读,幻读?

还有两篇文章(同一作者的简单版和详细版):

关于幻读,可重复读的真实用例是什么?(知乎简单篇)
mysql 幻读的详解、实例及解决办法(segmenfault详版)

这两篇文章的核心观点就是:

“不可重复读侧重表达 读-读,幻读则是说 读-写,用写来证实读的是鬼影。”

也可以作为一种对幻读的理解和参考(但是有一点大家是一致的,就是RR在数据库标准定义里是没有解决幻读问题的)

猜你喜欢

转载自blog.csdn.net/jayxujia123/article/details/108024282