auto commit
This commit is contained in:
@ -147,8 +147,8 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。
|
||||
|
||||
| - | X | S |
|
||||
| :--: | :--: | :--: |
|
||||
| **X** |×|×|
|
||||
| **S** |×|√|
|
||||
| **X** |×|×|
|
||||
| **S** |×|√|
|
||||
|
||||
### 2. 意向锁
|
||||
|
||||
@ -167,10 +167,10 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。
|
||||
|
||||
| - | X | IX | S | IS |
|
||||
| :--: | :--: | :--: | :--: | :--: |
|
||||
| **X** |× |× |× | ×|
|
||||
| **IX** |× |√ |× | √|
|
||||
| **S** |× |× |√ | √|
|
||||
| **IS** |× |√ |√ | √|
|
||||
| **X** |× |× |× | ×|
|
||||
| **IX** |× |√ |× | √|
|
||||
| **S** |× |× |√ | √|
|
||||
| **IS** |× |√ |√ | √|
|
||||
|
||||
解释如下:
|
||||
|
||||
@ -181,7 +181,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。
|
||||
|
||||
### 1. 三级封锁协议
|
||||
|
||||
**一级封锁协议**
|
||||
**一级封锁协议**
|
||||
|
||||
事务 T 要修改数据 A 时必须加 X 锁,直到 T 结束才释放锁。
|
||||
|
||||
@ -202,7 +202,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。
|
||||
| | commit |
|
||||
| | unlock-x(A)|
|
||||
|
||||
**二级封锁协议**
|
||||
**二级封锁协议**
|
||||
|
||||
在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。
|
||||
|
||||
@ -223,7 +223,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。
|
||||
| | unlock-s(A)|
|
||||
| | commit |
|
||||
|
||||
**三级封锁协议**
|
||||
**三级封锁协议**
|
||||
|
||||
在二级的基础上,要求读取数据 A 时必须加 S 锁,直到事务结束了才能释放 S 锁。
|
||||
|
||||
@ -448,7 +448,7 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE;
|
||||
|
||||
可以通过分解来满足。
|
||||
|
||||
<font size=4> **分解前** </font><br>
|
||||
<font size=4> **分解前** </font><br>
|
||||
|
||||
| Sno | Sname | Sdept | Mname | Cname | Grade |
|
||||
| :---: | :---: | :---: | :---: | :---: |:---:|
|
||||
@ -467,7 +467,7 @@ Grade 完全函数依赖于键码,它没有任何冗余数据,每个学生
|
||||
|
||||
Sname, Sdept 和 Mname 都部分依赖于键码,当一个学生选修了多门课时,这些数据就会出现多次,造成大量冗余数据。
|
||||
|
||||
<font size=4> **分解后** </font><br>
|
||||
<font size=4> **分解后** </font><br>
|
||||
|
||||
关系-1
|
||||
|
||||
|
Reference in New Issue
Block a user