您的位置:首页 > 数据库 > Oracle

Oracle数据并发性和一致性保护

2007-04-18 08:03 197 查看
 
数据并发性意味着许多用户可以同时访问数据。
数据一致性意味着每个用户看到的数据具有一致性,包括当前用户事务和其他用户事务对数据的改变。
 
数据并发性和一致性保护是为了防止并行事物情况可能出现的三种现象:
脏读(dirty read):事务读取了其他事务还没有提交的修改;
不可重复读(nonrepeatable read):事务读取先前曾读取过的数据,发现其他的已提交事务修改或删除了要读取的数据;
假象读(phantom read):事务再次执行一个查询,发现其他已提交事务插入了新的满足当前查询条件的数据。
针对以上三种现象,SQL92标准指定了4种隔离制度,这4种隔离方式一种比一种严格。
Read uncommitted:允许脏读、不可重复读和幻象读;
Read committed:不允许脏读,允许不可重复读和幻象读;
Repeatable read:不允许脏读、不可重复读,允许幻象读;
Serializable:不允许脏读、不可重复读和幻象读。
Oracle提供Read Committed和Serializable隔离等级,还提供了一种额外的只读模式。其中默认采用Read Committed模式。 Read Committed提供语句级读一致性,Serializable提供事务级读一致性。Read Committed等级下,仍然可能产生不可重复读和假象读的情况。Serializable等级下则不会。
隔离等级的实质:当Oracle开始一个查询时,只会读取SCN小于当前查询SCN的记录,如果发现数据文件中记录的SCN比查询的SCN大,则Oracle会从回滚段中找到数据在查询发生之前的镜像。
除了隔离等级之外,oracle还提供锁来进行数据的并发和一致性保护,但一般不需要了解。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle sql