数据库隔离级别
一、事务和隔离级别
事务的概念:事务是把对数据库的一系列操作都看做一个整体,要么全部成功,要么全部失败,利用事务我们可以保证数据库的完整性,事务具有原子性。
隔离级别:隔离级别定义了事务与事务之间的隔离距离。
脏读(dirty read):当一个事务读取另一个事务未提交的修改时,产生脏读。
不可重复读(nonrepeated read):同一查询在同一事务中多次进行,由于其他事务提交所做的修改,导致每次返回的结果不同,此时发生不可重复读。
幻读(phantom read):同一查询在同一事务中多次进行,由于其他事务或提交所做的新增或删除操作,导致每次得到的不同的结果集,此时发生幻读。
不可重复读侧重于修改,幻读侧重于新增或者删除。解决不可重复读只需要锁住满足条件的行,解决幻读需要锁表。
二、Oracle的事务隔离级别有两种
- READ COMMITTED :读已提交
- SERIALIZABLE:串行读取
Oracle默认隔离级别为:读已提交(READ COMMITTED)
三、MySQL的事务隔离级别有四种
- 读未提交 (Read uncommitted)
- 读已提交 (Read committed)
- 可重复读 (Repeated read)
- 可串行化 (Serializable)
MySQL默认隔离级别为:可重复读 (Repeated read)
参考链接:数据库的4种隔离级别