数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。
大多数数据库默认的事务级别隔离级别是Read committed、比如Sql Server,Oracle。Mysql的默认级别是Repeatable read
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
读未提交(read-uncommitted) | 是 | 是 | 是 |
读提交(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |
名词解释:
读未提交:就是一个事务可以读取另一个未提交事务的数据。
读提交:就是一个事务要等另一个事务提交后才能读取数据。
重复读:就是在开始读取数据(事务开启)时,不再允许修改操作。
Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
例子(找资料的时候发现这篇博客比较好理解):
https://www.cnblogs.com/ubuntu1/p/8999403.html