数据库定义了4种不同的隔离级别,4种隔离级别由低到高分别为:
Read-UnCommited:该隔离级别,允许读取尚未提交的数据,会出现脏读、不可重复读、幻读。目前基本上没有见过在生产上使用该隔离级别的。
Read-Commited: 该隔离级别,允许读取事务已经提交的数据,可以解决脏读,但是会出现不可重复读,幻读。
Oracle、SQLServer默认使用该隔离级别
Repeatable-Read:对同一字段的多次读取结果都是一致的,可以解决脏读和不可重复读,但是不能解决幻读
Mysql默认使用该隔离级别
Serializable:事务是完全诸葛执行,但是性能太差,目前基本上没有见过在生产上使用该隔离级别。
对于脏读:事务1更新了某个数据,事务2读取了该数据,事务1因为某些原因回滚了,事务2读取的数据就是不正确的
对于不可重复读:事务1在T1时刻读取了A数据,此时事务2在T2时刻修改了该数据并添加了,事务1在T3时刻读取了A数据,事务1发现T1和T3时刻A数据不一致。
对于幻读:事务1在T1时刻查询了几行数据,事务2在T2时刻插入了几行数据,事务1在T3时刻查询发现多了几行是之前没有的。
还没有评论,来说两句吧...