- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库隔离级别(收藏)
关于SET TRANSACTION READ ONLY
[ZT]ORACLE
隔离级别(isolation level)
??隔离级别定义了事务与事务之间的隔离程度。
??隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好。
??ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别:
??未提交读(read uncommitted)
??提交读(read committed)
??重复读(repeatable read)
??序列化(serializable)
??通过一些现象,可以反映出隔离级别的效果。这些现象有:
??更新丢失(lost update):当系统允许两个事务同时更新同一数据是,发生更新丢失。
??脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。
??非重复读(nonrepeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。(A transaction rereads data it has previously read and finds that another committed transaction has modified or deleted the data. )
??幻像(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。(A transaction reexecutes a query returning a set of rows that satisfies a search condition and finds that another committed transaction has inserted additional rows that satisfy the condition. )
??下面是隔离级别及其对应的可能出现或不可能出现的现象
? Dirty Read NonRepeatable Read Phantom Read Read uncommitted Possible Possible Possible Read committed Not possible Possible Possible Repeatable read Not possible Not possible Possible Serializable Not possible Not possible Not possible ORACLE的隔离级别
??ORACLE提供了SQL92标准中的read committed和serializable,同时提供了非SQL92标准的read-only。
??read committed:
??这是ORACLE缺省的事务隔离级别。
??事务中的每一条语句都遵从语句级的读一致性。
??保证不会脏读;但可能出现非重复读和幻像。
??serializable:
??简单地说,serializable就是使事务看起来象是一个接着一个地顺序地执行。
??仅仅能看见在本事务开始前由其它事务提交的更改和在本事务中所做的更改。
??保证不会出现非重复读和幻像。
??Serializable隔离级别提供了read-only事务所提供的读一致性(事务级的读一致性),同时又允许DML操作。
??如果有在serializable事务开始时未提交的事务在serializable事务结束之前修改了serializable事务将要修改的行并进行了提交,则serializable事务不会读到这些变更,因此发生无法序列化访问的错误。(换一种解释方法:只要在serializable事务开始到结束之间有其他事务对serializable事务要修改的东西进行了修改并提交了修改,则发生无法序列化访问的错误。)
??If a serializable transaction contains data manipulation language (DML) that attempts to update any resource that may have been updated in a transaction uncommitted at the start of the serializable transaction, (并且修改在后来被提交而没有回滚),then the DML statement fails. 返回的错误是ORA-08177: Cannot serialize access fo
文档评论(0)