您的位置:首页 > 数据库

数据库隔离级别

2018-02-01 11:38 148 查看
ANSI/ISO SQL 标准(SQL92)定义了四种事务隔离级别(transaction isolation level),这四种隔离级别所能提供的事务处理能力各不相同。

由低到高依次为Read uncommitted、Read committed、Repeatable
read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。

对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。主要有下面3种现在:

1、脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据。

2、非重复读(nonrepeatable read):在同一个事务中,同一个查询在T1时间读取某一行,在T2时间重新读取这一行时候,这一行的数据已经发生修改,可能被更新了(update),也可能被删除了(delete)。

3、幻像读(phantom read):在同一事务中,同一查询多次进行时候,由于其他插入操作(insert)的事务提交,导致每次返回不同的结果集。

不同的隔离级别有不同的现象,并有不同的锁定/并发机制,隔离级别越高,数据库的并发性就越差,4种事务隔离级别分别表现的现象如下表:

隔离级别脏读非重复读幻像读
read uncommitted允许允许允许
read committed 允许允许
repeatable read  允许
serializable   
Oracle 支持的 3 种事务隔离级别:READ COMMITED, SERIALIZABLE, 以及 SQL92 中没有包含的只读模式(read-only mode). Oracle 默认的事务隔离级别为: READ COMMITED   

Mysql 支持 4 中事务隔离级别. Mysql 默认的事务隔离级别为: REPEATABLE READ  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle