-
未提交读(Read Uncommitted)
A事务只要修改数据,其他事务就可以看到
优点:并发能力最强 -
提交读(Read Committed)
A事务修改数据,但未提交,其他事务不能读到A事务未提交的数据
多数数据默认的事务等级 -
可重复读(Repeatable Read)
A事务不会修改其他事务未提交的数据 -
串行化(Serializable)
事务按顺序执行
性能低,很少使用
以上四种级别为逐渐递增方式,如下:√: 可能发生 ×: 不会发生
脏读 | 不可重复读 | 幻读 | |
---|---|---|---|
未提交读 | √ | √ | √ |
提交读 | x | √ | √ |
可重复读 | x | x | √ |
串行化 | x | x | x |
mysql默认可重复读,支持四种
Oracle默认为读写提交,只支持读写和串行化
-
脏读
A事务访问数据并修改,但没提交。B事务访问并使用了这个数据 -
不可重复读
A事务多次读同一数据,事务未结束,但B事务修改并提交了数据,此时A事务读到数据不一致 -
幻读
A事物查询后,B事物添加一数据后提交,A事物两次查询的数据不一样
网友评论