File tree Expand file tree Collapse file tree 1 file changed +2
-2
lines changed Expand file tree Collapse file tree 1 file changed +2
-2
lines changed Original file line number Diff line number Diff line change @@ -512,15 +512,15 @@ COMMIT;
512
512
- 不可重复读的重点是内容修改或者记录减少比如多次读取一条记录发现其中某些记录的值被修改;
513
513
- 幻读的重点在于记录新增比如多次执行同一条查询语句(DQL)时,发现查到的记录增加了。
514
514
515
- 幻读其实可以看作是不可重复读的一种特殊情况,单独把区分幻读的原因主要是解决幻读和不可重复读的方案不一样 。
515
+ 幻读其实可以看作是不可重复读的一种特殊情况,单独把幻读区分出来的原因主要是解决幻读和不可重复读的方案不一样 。
516
516
517
517
举个例子:执行 ` delete ` 和 ` update ` 操作的时候,可以直接对记录加锁,保证事务安全。而执行 ` insert ` 操作的时候,由于记录锁(Record Lock)只能锁住已经存在的记录,为了避免插入新记录,需要依赖间隙锁(Gap Lock)。也就是说执行 ` insert ` 操作的时候需要依赖 Next-Key Lock(Record Lock+Gap Lock) 进行加锁来保证不出现幻读。
518
518
519
519
### 并发事务的控制方式有哪些?
520
520
521
521
MySQL 中并发事务的控制方式无非就两种:** 锁** 和 ** MVCC** 。锁可以看作是悲观控制的模式,多版本并发控制(MVCC,Multiversion concurrency control)可以看作是乐观控制的模式。
522
522
523
- ** 锁** 控制方式下会通过锁来显示控制共享资源而不是通过调度手段 ,MySQL 中主要是通过 ** 读写锁** 来实现并发控制。
523
+ ** 锁** 控制方式下会通过锁来显式控制共享资源而不是通过调度手段 ,MySQL 中主要是通过 ** 读写锁** 来实现并发控制。
524
524
525
525
- ** 共享锁(S 锁)** :又称读锁,事务在读取记录的时候获取共享锁,允许多个事务同时获取(锁兼容)。
526
526
- ** 排他锁(X 锁)** :又称写锁/独占锁,事务在修改记录的时候获取排他锁,不允许多个事务同时获取。如果一个记录已经被加了排他锁,那其他事务不能再对这条记录加任何类型的锁(锁不兼容)。
You can’t perform that action at this time.
0 commit comments