数据并发访问和数据的一致性-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3976923
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: oracle

2006-12-18 18:34:53

数据并发性意味着许多用户可以同时访问数据。
数据一致性意味着每个用户看到的数据具有一致性,包括当前用户事务和其他用户事务对数据的改变。

三种可防止的现象:
脏读(dirty read):事务可以读取其他事务还没有提交的修改;
不可重复读(nonrepeatable read):事务读取先前曾读取过的数据,发现其他的已提交事务修改或删除了要读取的数据;
幻象读(phantom read):事务再次执行一个查询,发现其他已提交事务插入了新的满足当前查询条件的数据。
针对以上三种现象,sql92标准指定了4种隔离制度,这4种隔离制度一种比一种严格。
read uncommitted:允许脏读、不可重复读和幻象读;
read committed:不允许脏读,允许不可重复读和幻象读;
repeatable read:不允许脏读、不可重复读,允许幻象读;
serializable:不允许脏读、不可重复读和幻象读。
oracle提供read committed和serializable隔离等级,还提供了一种额外的只读模式。其中默认采用read committed模式。

oracle提供语句级读一致性和事务级读一致性。当oracle开始一个查询时,只会读取scn小于当前查询scn的记录,如果发现数据文件中记录的scn比查询的scn大,则oracle会从回滚段中找到数据在查询发生之前的镜像。

串行隔离等级的适用环境:
大数据库中执行短的事务,且update语句只更新少数几条记录;
两个并发事务同时修改同一条记录的可能性很低;
运行时间相对较长的事务以只读事务为主。
使用串行隔离等级时需要对ora-08177错误进行额外的处理。

oracle通过锁机制在事务之间提供数据的并发性和一致性。
锁的模式包括两种:
独占锁:锁住相关资源不被其他人共享。
共享锁:根据操作类型允许资源的共享。多个事务可以在同一个资源上设立共享锁。
死锁:两个事务都占用一定的资源,且两个事务都需要等待对方释放资源才能继续执行,这种情况就构成了死锁。oracle会自动监测死锁的发生。


锁类型包括三种:
dml锁:用于保护数据;
ddl锁:用于保护数据字典;
内部锁和latch:用来保护数据库内部结构如数据文件。

dml锁分为行级锁(tx)和表级锁(tm)两种,而表级锁又包含5种类型:
row share table lock(rs):获取方式select from table for update of和lock table in row share mode。
row exclusive table lock(rx):获取方式update/insert/delete table或lock table in row exclusive mode。
share table lock(s):获取方式lock table in share mode。
share row exclusive table lock(srx):获取方式lock table in share row exclusive mode。
exclusive table lock(x):获取方式lock table in exclusive mode。

ddl锁分为独占ddl锁和共享ddl锁两种。

oracle9i新增功能闪回查询:
闪回查询允许用户查询过去某个时间点或系统scn号的数据情况。
这里有一个介绍闪回操作的例子:http://blog.itpub.net/post/468/15464

from : http://yangtingkun.itpub.net/post/468/30838
阅读(2217) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图