ACID 原子性 一致性 隔离性 持久性
隔离性:读未提交 读提交 可重复读 串行化
脏读:事务A读取了事务B更新的数据,然后B又回滚了,那么A读的就是脏数据
不可重复读:事务A多次读取数据,事务B在A的读取过程中修改并提交,导致A读到的数据前后不一致
幻读:A修改了整体的数据,但是B又新增了一条,A发现没修改成功,产生了幻觉。
不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。
解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。
读未提交----会引起脏读
提交度----会导致不可重复读
可重复读----会导致幻读
串行化-----强制事务串行执行
Mysql 默认:可重复读
Oracle 默认:读已提交
Oracle 默认:读已提交
事务隔离级别
|
脏读
|
不可重复读
|
幻读
|
读未提交(read-uncommitted)
|
是
|
是
|
是
|
读已提交(read-committed)
|
否
|
是
|
是
|
可重复读(repeatable-read)
|
否
|
否
|
是
|
串行化(serializable)
|
否
|
否
|
否
|