auto commit

This commit is contained in:
CyC2018 2018-03-22 14:57:03 +08:00
parent b2f1592ec8
commit 60e5002cde

View File

@ -6,24 +6,25 @@
* [问题](#问题) * [问题](#问题)
* [解决方法](#解决方法) * [解决方法](#解决方法)
* [三、封锁](#三封锁) * [三、封锁](#三封锁)
* [封锁类型](#封锁类型)
* [封锁粒度](#封锁粒度) * [封锁粒度](#封锁粒度)
* [封锁类型](#封锁类型)
* [封锁协议](#封锁协议) * [封锁协议](#封锁协议)
* [四、隔离级别](#四隔离级别) * [四、隔离级别](#四隔离级别)
* [五、多版本并发控制](#五多版本并发控制) * [五、多版本并发控制](#五多版本并发控制)
* [版本号](#版本号) * [版本号](#版本号)
* [Undo 日志](#undo-日志) * [Undo 日志](#undo-日志)
* [实现过程](#实现过程) * [实现过程](#实现过程)
* [六、关系数据库设计理论](#六关系数据库设计理论) * [六、间隙锁](#六间隙锁)
* [七、关系数据库设计理论](#七关系数据库设计理论)
* [函数依赖](#函数依赖) * [函数依赖](#函数依赖)
* [异常](#异常) * [异常](#异常)
* [范式](#范式) * [范式](#范式)
* [七、数据库系统概述](#七数据库系统概述) * [八、数据库系统概述](#八数据库系统概述)
* [基本术语](#基本术语) * [基本术语](#基本术语)
* [数据库的三层模式和两层映像](#数据库的三层模式和两层映像) * [数据库的三层模式和两层映像](#数据库的三层模式和两层映像)
* [八、关系数据库建模](#八关系数据库建模) * [九、关系数据库建模](#九关系数据库建模)
* [ER 图](#er-图) * [ER 图](#er-图)
* [约束](#约束) * [十、约束](#约束)
* [参考资料](#参考资料) * [参考资料](#参考资料)
<!-- GFM-TOC --> <!-- GFM-TOC -->
@ -94,17 +95,6 @@ T<sub>1</sub> 读取某个范围的数据T<sub>2</sub> 在这个范围内插
# 三、封锁 # 三、封锁
## 封锁类型
- 排它锁Exclusive简写为 X 锁,又称写锁。
- 共享锁Shared简写为 S 锁,又称读锁。
- 一个事务对数据对象 A 加了 X 锁,就可以对 A 进行读取和更新。加锁期间其它事务不能对 A 加任何锁。
- 一个事务对数据对象 A 加了 S 锁,可以对 A 进行读取操作,但是不能进行更新操作。加锁期间其它事务能对 A 加 S 锁,但是不能加 X 锁。
以上加锁规定总结如下:
<div align="center"> <img src="../pics//3e87de44-1c69-4365-8139-b22e8d4be347.png"/> </div><br>
## 封锁粒度 ## 封锁粒度
<div align="center"> <img src="../pics//1a851e90-0d5c-4d4f-ac54-34c20ecfb903.jpg" width="300"/> </div><br> <div align="center"> <img src="../pics//1a851e90-0d5c-4d4f-ac54-34c20ecfb903.jpg" width="300"/> </div><br>
@ -115,6 +105,43 @@ T<sub>1</sub> 读取某个范围的数据T<sub>2</sub> 在这个范围内插
MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 MySQL 中提供了两种封锁粒度:行级锁以及表级锁。
## 封锁类型
### 1. 排它锁与共享锁
- 排它锁Exclusive简写为 X 锁,又称写锁。
- 共享锁Shared简写为 S 锁,又称读锁。
有以下两个规定:
1. 一个事务对数据对象 A 加了 X 锁,就可以对 A 进行读取和更新。加锁期间其它事务不能对 A 加任何锁。
2. 一个事务对数据对象 A 加了 S 锁,可以对 A 进行读取操作,但是不能进行更新操作。加锁期间其它事务能对 A 加 S 锁,但是不能加 X 锁。
锁的兼容关系如下:
| - | X | S |
| :--: | :--: | :--: |
|X|YES|No|
|S|No| No|
### 2. 意向锁
意向锁Intention Locks可以支持多粒度封锁它在原来的 X/S 锁之上引入了 IX/IS用来表示一个事务想要在某个数据对象上加 X 锁或 S 锁。
有以下两个规定:
1. 一个事务在获得某个数据行对象的 S 锁之前,必须先获得 IS 锁或者更强的锁;
2. 一个事务在获得某个数据行对象的 X 锁之前,必须先获得 IX 锁。
各种锁的兼容关系如下:
| - | X | IX | S | IS |
| :--: | :--: | :--: | :--: | :--: |
|X |NO |NO |NO | NO|
|IX |NO |YES|NO | YES|
|S |NO |NO |YES| YES|
|IS |NO |YES|YES| YES|
## 封锁协议 ## 封锁协议
### 1. 三级封锁协议 ### 1. 三级封锁协议
@ -230,7 +257,9 @@ InnoDB 的 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回
将系统版本号作为更新后的数据行快照的创建版本号,同时将系统版本号作为作为更新前的数据行快照的删除版本号。可以理解为新执行 DELETE 后执行 INSERT。 将系统版本号作为更新后的数据行快照的创建版本号,同时将系统版本号作为作为更新前的数据行快照的删除版本号。可以理解为新执行 DELETE 后执行 INSERT。
# 六、关系数据库设计理论 # 六、间隙锁
# 七、关系数据库设计理论
## 函数依赖 ## 函数依赖
@ -357,7 +386,7 @@ Sname, Sdept 和 Manme 都函数依赖于 Sno而部分依赖于键码。当
可以分解成 SC(Sname, Cname, Grade) 和 ST(Sname, Tname),对于 ST属性之间是多对多关系无函数依赖。 可以分解成 SC(Sname, Cname, Grade) 和 ST(Sname, Tname),对于 ST属性之间是多对多关系无函数依赖。
# 、数据库系统概述 # 、数据库系统概述
## 基本术语 ## 基本术语
@ -399,7 +428,7 @@ Sname, Sdept 和 Manme 都函数依赖于 Sno而部分依赖于键码。当
把模式的全局逻辑结构和内模式的物理结构联系起来,该映像可以保证数据和应用程序的物理独立性。 把模式的全局逻辑结构和内模式的物理结构联系起来,该映像可以保证数据和应用程序的物理独立性。
# 、关系数据库建模 # 、关系数据库建模
## ER 图 ## ER 图
@ -435,7 +464,7 @@ Entity-Relationship有三个组成部分实体、属性、联系。
<div align="center"> <img src="../pics//7ec9d619-fa60-4a2b-95aa-bf1a62aad408.jpg"/> </div><br> <div align="center"> <img src="../pics//7ec9d619-fa60-4a2b-95aa-bf1a62aad408.jpg"/> </div><br>
## 约束 ## 十、约束
### 1. 键码 ### 1. 键码
@ -463,6 +492,7 @@ Entity-Relationship有三个组成部分实体、属性、联系。
- 史嘉权. 数据库系统概论[M]. 清华大学出版社有限公司, 2006. - 史嘉权. 数据库系统概论[M]. 清华大学出版社有限公司, 2006.
- 施瓦茨. 高性能MYSQL(第3版)[M]. 电子工业出版社, 2013. - 施瓦茨. 高性能MYSQL(第3版)[M]. 电子工业出版社, 2013.
- [The InnoDB Storage Engine](https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html)
- [Transaction isolation levels](https://www.slideshare.net/ErnestoHernandezRodriguez/transaction-isolation-levels) - [Transaction isolation levels](https://www.slideshare.net/ErnestoHernandezRodriguez/transaction-isolation-levels)
- [Concurrency Control](http://scanftree.com/dbms/2-phase-locking-protocol) - [Concurrency Control](http://scanftree.com/dbms/2-phase-locking-protocol)
- [The Nightmare of Locking, Blocking and Isolation Levels!](https://www.slideshare.net/brshristov/the-nightmare-of-locking-blocking-and-isolation-levels-46391666) - [The Nightmare of Locking, Blocking and Isolation Levels!](https://www.slideshare.net/brshristov/the-nightmare-of-locking-blocking-and-isolation-levels-46391666)