事务隔离分为四个级别。
READ UNCOMMITTED。一个事务可以读另一个事务未提交的数据,是隔离级别最低的,也是基本没有应用的。脏读,不可重复读,幻读都会发生。
READ COMMITTED。一个事务只会读取另一个事务提交后的数据,不会再出现脏读,但是会出现不可重复读和幻读。
REPEATABLE READ。重复读,在开始读取事务的时候不允许另一个事务进行修改操作。会出现幻读。
SERIALIZABLE。序列化。所有事务进行串行处理,不会出现问题但是执行速度会很慢。
大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别是Repeatable read。
脏读。一个事务读取了另一个事务未提交的数据,这个数据有可能会被回滚,是不存在的。
不可重复读。一个事务在另一个事务提交前后读取数据时发现两次查询的结果不一样。
幻读。一个事务在另一个事务新增数据提交前后读取的数据条数不一样。