欢迎来到天天文库
浏览记录
ID:14285712
大小:46.00 KB
页数:4页
时间:2018-07-27
《隔离级别的性能影响》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、隔离级别的性能影响隔离级别确定存取数据时如何锁定数据或使数据不受其它进程影响。该隔离级别将在工作单元运行期间生效。在执行OPENCURSOR的工作单元期间,使用由WITHHOLD子句的DECLARECURSOR语句声明的游标的应用程序将保持选定的隔离级别。DB2(R)支持下列隔离级别:·可重复读·读稳定性·游标稳定性·未落实的读。注:某些主机数据库服务器支持不落实隔离级别。对于其它数据库,此隔离级别的行为与未落实的读隔离级别一样。每个隔离级别的详细说明按它们对性能的影响程度的降序排列,但按您存取和更新数据时需要加以关
2、心的程度的升序排列。可重复读可重复读(RR)会锁定应用程序在工作单元中引用的所有行。利用“可重复读”,在打开游标的相同工作单元内一个应用程序发出一个SELECT语句两次,每次都能获得相同的结果。利用“可重复读”,不可能出现丢失更新、存取未落实的数据和幻像行的情况。在该工作单元完成之前,“可重复读”应用程序可以尽可能多次地检索和操作这些行。但是,在该工作单元完成之前其它应用程序均不能更新、删除或插入可能会影响结果表的行。“可重复读”应用程序不能查看其它应用程序的未落实更改。利用“可重复读”,将会锁定引用的每一行,而不仅
3、仅是检索的那些行。执行了适当的锁定,因此其它应用程序不能插入或更新行(该行可能要添加到查询所引用的行的列表中,如果重新执行查询的话)。这将防止出现幻像行。例如,如果您扫描10 000行并对它们应用谓词,尽管只有10行满足条件,但仍会锁定全部的10 000行。注:“可重复读”隔离级别确保在应用程序看到数据之前所有返回的数据保持不变,即使使用了临时表或行分块也是如此。由于“可重复读”可能获得和挂起大量锁定,因此这些锁定可能超出可作为locklist和maxlocks配置参数的有效结果的锁定数。为了避免锁定升级,优化器在认
4、为很可能会发生锁定升级的时候,可能选择立即获得单个表级别锁定用于索引扫描。这就象数据库管理器代表您发出了一个LOCKTABLE语句一样。如果不想获得表级别锁定,确保有足够的锁定可用于该事务或使用“读稳定性”隔离级别。读稳定性读稳定性(RS)只锁定应用程序在工作单元中检索的那些行。它确保在工作单元完成之前,任何在工作单元运行期间的行读取限定不被其它应用程序进程更改,且不会读取另一个应用程序进程更改的任何行,直至该进程落实更改。也就是说,不可能出现“不可重复读”情形。与可重复读不同,使用“读稳定性”时,如果您的应用程序多
5、次发出相同的查询,则有可能看到附加的幻像行(幻像读现象)。重新调用扫描10 000行的示例时,“读稳定性”只锁定限定的行。这样,使用“读稳定性”时,只检索10行,且只对那十行挂起锁定。将它与“可重复读”对比,在此示例中,可重复读会在所有的10 000行上挂起锁定。挂起的锁定可以是共享、下次共享、更新或互斥锁定。注:“读稳定性”隔离级别确保在应用程序看到数据之前所有返回的数据保持不变,即使使用了临时表或行分块也是如此。“读稳定性”隔离级别的其中一个目标是提供较高并发性程度以及数据的稳定视图。为了有助于达到此目标,优化器
6、确保在发生锁定升级前不获取表级锁定。“读稳定性”隔离级别最适用于包括下列所有特征的应用程序:·在并发环境下运行·需要限定某些行在工作单元运行期间保持稳定·在工作单元中不会多次发出相同的查询,或者在同一工作单元中发出多次查询时并不要求该查询获得相同的回答。游标稳定性游标稳定性(CS)当在行上定位游标时会锁定任何由应用程序的事务所存取的行。此锁定在读取下一行或终止事务之前有效。但是,如果更改了某一行上的任何数据,则在对数据库落实更改之前必须挂起该锁定。对于具有“游标稳定性”的应用程序已检索的行,当该行上有任何可更新的游标
7、时,任何其它应用程序都不能更新或删除该行。“游标稳定性”应用程序不能查看其它应用程序的未落实更改。再次引用扫描10 000行的示例,如果使用“游标稳定性”,将只锁定当前游标位置以下的行。当移离该行时,也就除去了该锁定(除非更新该行)。使用“游标稳定性”,可能会出现不可重复读和幻像读现象。“游标稳定性”是缺省隔离级别,且应在需要最大并发性,但只看到其它应用程序中的已落实行的情况下才使用。未落实的读未落实的读(UR)允许应用程序存取其它事务的未落实的更改。除非其它应用程序尝试删除或改变该表,否则该应用程序也不会锁定正读取
8、的行而使其它应用程序不能存取该行。对于只读和可更新的游标,“未落实的读”的工作方式有所不同。只读游标可存取大多数其它事务的未落实的更改。但是,当该事务正在处理时,正由其它事务创建或删除的表、视图和索引不能使用。其它事务的任何其它更改在落实或回滚前都可被读取。注:“未落实的读”隔离级别下的可更新操作的游标将按隔离级别是游标稳定性的方式工作。当它使
此文档下载收益归作者所有