数据库事务隔离级别
Read uncommitted 读未提交
一个事务可以读取另一个未提交事务的数据,会发生脏读;
Read committed 读提交
一个事务要等另一个事务提交后才能读取数据,能解决脏读问题,但是会发生不可重复读:一个事务范围内两个相同的查询却返回了不同数据,对应的是修改,即UPDATE操作;
Repeatable read 重复读
在开始读取数据(事务开启)时,不再允许修改操作,能解决重复读问题,但是会发生幻读:对应的是插入INSERT操作,而不是UPDATE操作;
Serializable 序列化
Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
eg:大多数数据库默认的事务隔离级别是Read committed,比如Sql Server,Oracle。Mysql的默认隔离级别是Repeatable read。