From b140e592a93a7241a9f87ecb10e7e4074dfd776d Mon Sep 17 00:00:00 2001 From: gloriatime <33549995+gloriatime@users.noreply.github.com> Date: Tue, 23 Jun 2026 23:14:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E6=98=8E=E4=BA=86RR=E4=B8=8B=E5=B9=BB?= =?UTF-8?q?=E8=AF=BB=E4=BE=8B=E5=AD=90=E7=9A=84=E5=8F=91=E7=94=9F=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/database/mysql/transaction-isolation-level.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/database/mysql/transaction-isolation-level.md b/docs/database/mysql/transaction-isolation-level.md index 4ee2cabc95a..f0c6ecc7802 100644 --- a/docs/database/mysql/transaction-isolation-level.md +++ b/docs/database/mysql/transaction-isolation-level.md @@ -105,6 +105,8 @@ SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTE SQL 脚本 1 在第一次查询工资为 500 的记录时只有一条,SQL 脚本 2 插入了一条工资为 500 的记录,提交之后;SQL 脚本 1 在同一个事务中再次使用当前读查询发现出现了两条工资为 500 的记录这种就是幻读。 +注:这里的幻读本质上是第一次快照读 + 第二次当前读 所产生的错位。在RR下,MVCC保证快照读不出现幻读,记录锁+间隙锁保证当前读不出现幻读。但快照读与当前读之间mysql不提供一致性保证。 + #### 解决幻读的方法 解决幻读的方式有很多,但是它们的核心思想就是一个事务在操作某张表数据的时候,另外一个事务不允许新增或者删除这张表中的数据了。解决幻读的方式主要有以下几种: