auto commit
This commit is contained in:
parent
b2f1592ec8
commit
60e5002cde
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user