Update 数据库系统原理.md
补充数据库隔离级别内容
This commit is contained in:
parent
c631ea76f7
commit
33024af5b6
@ -280,13 +280,20 @@ SELECT ... FOR UPDATE;
|
||||
|
||||
事务中的修改,即使没有提交,对其它事务也是可见的。
|
||||
|
||||
- 写数据时加上X锁,直到事务结束;读的时候不加锁。
|
||||
- 虽然能够避免丢失数据,但是会读到没有提交或者回滚的内容 (脏数据)。
|
||||
|
||||
## 提交读(READ COMMITTED)
|
||||
|
||||
一个事务只能读取已经提交的事务所做的修改。换句话说,一个事务所做的修改在提交之前对其它事务是不可见的。
|
||||
- 写数据的时候加上X锁,直到事务结束;读的时候加上S锁,读完数据立刻释放。
|
||||
- 这能避免“丢失数据”和“脏数据”,但是会出现“不可重复读”的问题,这是第二级的事务隔离级别。
|
||||
|
||||
## 可重复读(REPEATABLE READ)
|
||||
|
||||
保证在同一个事务中多次读取同样数据的结果是一样的。
|
||||
- 写数据的时候加上X锁,直到事务结束;读数据的时候加S锁,也是直到事务结束。
|
||||
- 这能避免“丢失数据”和“脏数据”,“不可重复读”三个问题 , 这是数据库常用的隔离级别。
|
||||
|
||||
## 可串行化(SERIALIZABLE)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user