From 5e794c5b0fb85638b18b05976159ab2bdf186493 Mon Sep 17 00:00:00 2001 From: fanxijun Date: Thu, 4 Jul 2019 20:12:15 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E6=95=B0=E6=8D=AE=E5=BA=93=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E5=8E=9F=E7=90=86.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更正MVCC里SELECT操作时检查行数据版本号的条件,请查阅。 --- notes/数据库系统原理.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md index 22118e9b..d3387253 100644 --- a/notes/数据库系统原理.md +++ b/notes/数据库系统原理.md @@ -334,7 +334,7 @@ MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把 多个事务必须读取到同一个数据行的快照,并且这个快照是距离现在最近的一个有效快照。但是也有例外,如果有一个事务正在修改该数据行,那么它可以读取事务本身所做的修改,而不用和其它事务的读取结果一致。 -把没有对一个数据行做修改的事务称为 T,T 所要读取的数据行快照的创建版本号必须小于 T 的版本号,因为如果大于或者等于 T 的版本号,那么表示该数据行快照是其它事务的最新修改,因此不能去读取它。除此之外,T 所要读取的数据行快照的删除版本号必须大于 T 的版本号,因为如果小于等于 T 的版本号,那么表示该数据行快照是已经被删除的,不应该去读取它。 +把没有对一个数据行做修改的事务称为 T,T 所要读取的数据行快照的创建版本号必须小于或等于 T 的版本号,因为如果大于 T 的版本号,那么表示该数据行快照是其它事务的最新修改,因此不能去读取它。除此之外,T 所要读取的数据行快照的删除版本号必须是未定义或者大于 T 的版本号,因为如果小于等于 T 的版本号,那么表示该数据行快照是已经被删除的,不应该去读取它。 ### 2. INSERT