From ea3428808b9e19548204bd63a30474c2acabb11f Mon Sep 17 00:00:00 2001
From: CyC2018 <1029579233@qq.com>
Date: Thu, 22 Mar 2018 11:51:35 +0800
Subject: [PATCH] auto commit
---
notes/数据库系统原理.md | 36 +++++++++++++++---
pics/e41405a8-7c05-4f70-8092-e961e28d3112.jpg | Bin 0 -> 14336 bytes
2 files changed, 30 insertions(+), 6 deletions(-)
create mode 100644 pics/e41405a8-7c05-4f70-8092-e961e28d3112.jpg
diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md
index a41f245f..7dae277d 100644
--- a/notes/数据库系统原理.md
+++ b/notes/数据库系统原理.md
@@ -10,14 +10,15 @@
* [封锁粒度](#封锁粒度)
* [封锁协议](#封锁协议)
* [四、隔离级别](#四隔离级别)
-* [五、关系数据库设计理论](#五关系数据库设计理论)
+* [五、多版本并发控制](#五多版本并发控制)
+* [六、关系数据库设计理论](#六关系数据库设计理论)
* [函数依赖](#函数依赖)
* [异常](#异常)
* [范式](#范式)
-* [六、数据库系统概述](#六数据库系统概述)
+* [七、数据库系统概述](#七数据库系统概述)
* [基本术语](#基本术语)
* [数据库的三层模式和两层映像](#数据库的三层模式和两层映像)
-* [七、关系数据库建模](#七关系数据库建模)
+* [八、关系数据库建模](#八关系数据库建模)
* [ER 图](#er-图)
* [约束](#约束)
* [参考资料](#参考资料)
@@ -178,7 +179,29 @@ lock-x(A)...unlock(A)...lock-s(B)...unlock(B)...lock-s(c)...unlock(C)...
| 可重复读 | NO | NO | YES |
| 可串行化 | NO | NO | NO |
-# 五、关系数据库设计理论
+# 五、多版本并发控制
+
+(未完待续)
+
+(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现的一种并发控制方式,通过保存数据在某个时间点的快照,让多个事务对同一个数据的读取结果是一致的。
+
+MVCC 可以工作在提交读和可重复读两个隔离级别下,因为未提交读总是读取最新的数据行,可串行化会对所有读取的行都加锁。
+
+ **版本号是一个**
+
+版本是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。
+
+事务的版本号为事务开始时的系统版本号。
+
+InooDB 的 MVCC 在每行记录后面都保存着两个隐藏的列,一个列保存着创建的版本号,一个列保存着删除的版本号。
+
+ **Undo 日志**
+
+MVCC 实现使用到的快照其实是 Undo 日志,它通过回滚指针把一个数据行(Record)的所有版本连接起来。
+
+
+
+# 六、关系数据库设计理论
## 函数依赖
@@ -305,7 +328,7 @@ Sname, Sdept 和 Manme 都函数依赖于 Sno,而部分依赖于键码。当
可以分解成 SC(Sname, Cname, Grade) 和 ST(Sname, Tname),对于 ST,属性之间是多对多关系,无函数依赖。
-# 六、数据库系统概述
+# 七、数据库系统概述
## 基本术语
@@ -347,7 +370,7 @@ Sname, Sdept 和 Manme 都函数依赖于 Sno,而部分依赖于键码。当
把模式的全局逻辑结构和内模式的物理结构联系起来,该映像可以保证数据和应用程序的物理独立性。
-# 七、关系数据库建模
+# 八、关系数据库建模
## ER 图
@@ -416,3 +439,4 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。
- [The Nightmare of Locking, Blocking and Isolation Levels!](https://www.slideshare.net/brshristov/the-nightmare-of-locking-blocking-and-isolation-levels-46391666)
- [三级模式与两级映像](http://blog.csdn.net/d2457638978/article/details/48783923)
- [Database Normalization and Normal Forms with an Example](https://aksakalli.github.io/2012/03/12/database-normalization-and-normal-forms-with-an-example.html)
+- [The basics of the InnoDB undo logging and history system](https://blog.jcole.us/2014/04/16/the-basics-of-the-innodb-undo-logging-and-history-system/)
diff --git a/pics/e41405a8-7c05-4f70-8092-e961e28d3112.jpg b/pics/e41405a8-7c05-4f70-8092-e961e28d3112.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7fef7ba5c04dd185a0798ae113327aace5108c3d
GIT binary patch
literal 14336
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