Update 数据库系统原理.md

补充数据库隔离级别内容
This commit is contained in:
q147258134 2018-12-01 21:14:50 +08:00 committed by GitHub
parent c631ea76f7
commit 33024af5b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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