数据库的四种隔离级别
- read uncommitted 读未提交
- read committed 读已提交 (Oracle,Sql Server的默认级别)
- repeatable read 可重复读 (Mysql的默认级别)
- serializable 串行化
1.读未提交可能造成脏读:未提交的数据被读取后rollback了。
2.读已提交可能造成不可重复读: A事务开始做了一次select,此时B事务对A事务涉及的数据进行了update/delete,接着提交,A事务再select,结果两次select结果不一致。
3.可重复读可能导致幻读:A事务开始做了一次select,此时B事务对A事务涉及的数据进行了insert,接着提交,A事务再select,结果两次select结果不一致。
4.串行化:理论上,实际应用中一般不会采用的隔离级别,所有的事务都不会并发进行,而是串行执行,吞吐量太差。
不可重复读与幻读的区别,前者是下一次读取前有别的事务对数据进行了update或delete,而后者是insert。