1.几种问题:
赃读:读取到别人未提交的数据(设置隔离级别为②③④可以避免该问题出现)
不可重复读:前后两次读取到的数据不一致(③④可以避免该问题出现)
幻读:前后读取到的记录数不一致(另外一个事务增加或者删除了几条记录)(④可以避免该问题出现)
2.隔离级别
- read-uncommitted(①)
允许事务读取其他事务未提交的数据,赃读、不可重复读、幻读的问题都会出现
- read-committed(②)
只允许读取其他事务已经提交的数据,可以避免赃读,但是不可重复读、幻读的问题仍存在
-
repeatable-read(③)
原来:会出现幻读
现在:幻读也可以避免(MySQL5.0后)
-
serializable(④)
可以避免所有问题
MySQL与Oracle:
Oracle支持两种 事务隔离级别:read-committed(默认),serializable
MySQL支持4种,默认是:repeatable-read