File tree Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Original file line number Diff line number Diff line change @@ -174,7 +174,7 @@ select sql_no_cache count(*) from usr;
174
174
- ** 不可重复读(Unrepeatableread):** 指在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。
175
175
- ** 幻读(Phantom read):** 幻读与不可重复读类似。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。
176
176
177
- ** 不可重复度和幻读区别 :**
177
+ ** 不可重复读和幻读区别 :**
178
178
179
179
不可重复读的重点是修改比如多次读取一条记录发现其中某些列的值被修改,幻读的重点在于新增或者删除比如多次读取一条记录发现记录增多或减少了。
180
180
@@ -207,11 +207,13 @@ mysql> SELECT @@tx_isolation;
207
207
+ -- ---------------+
208
208
```
209
209
210
- 这里需要注意的是:与 SQL 标准不同的地方在于 InnoDB 存储引擎在 ** REPEATABLE-READ(可重读)** 事务隔离级别下使用的是Next-Key Lock 锁算法,因此可以避免幻读的产生,这与其他数据库系统(如 SQL Server)是不同的。所以说InnoDB 存储引擎的默认支持的隔离级别是 ** REPEATABLE-READ(可重读)** 已经可以完全保证事务的隔离性要求,即达到了 SQL标准的** SERIALIZABLE(可串行化)** 隔离级别。
210
+ 这里需要注意的是:与 SQL 标准不同的地方在于 InnoDB 存储引擎在 ** REPEATABLE-READ(可重读)**
211
+ 事务隔离级别下使用的是Next-Key Lock 锁算法,因此可以避免幻读的产生,这与其他数据库系统(如 SQL Server)
212
+ 是不同的。所以说InnoDB 存储引擎的默认支持的隔离级别是 ** REPEATABLE-READ(可重读)** 已经可以完全保证事务的隔离性要求,即达到了
213
+ SQL标准的 ** SERIALIZABLE(可串行化)** 隔离级别。因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是 ** READ-COMMITTED(读取提交内容)
214
+ ** ,但是你要知道的是InnoDB 存储引擎默认使用 ** REPEAaTABLE-READ(可重读)** 并不会有任何性能损失。
211
215
212
- 因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是** READ-COMMITTED(读取提交内容):** ,但是你要知道的是InnoDB 存储引擎默认使用 ** REPEATABLE-READ(可重读)** 并不会有任何性能损失。
213
-
214
- InnoDB 存储引擎在 ** 分布式事务** 的情况下一般会用到** SERIALIZABLE(可串行化)** 隔离级别。
216
+ InnoDB 存储引擎在 ** 分布式事务** 的情况下一般会用到 ** SERIALIZABLE(可串行化)** 隔离级别。
215
217
216
218
### 锁机制与InnoDB锁算法
217
219
You can’t perform that action at this time.
0 commit comments