DB2中的读稳定性是每一个DBA都需要掌握的知识,它保证了不可能出现“不可重复读”情形,值得我们仔细去研究学习。
读稳定性(RS)只锁定应用程序在工作单元中检索的那些行。它确保在某个工作单元完成之前,在该工作单元运行期间的任何限定行读取不被其他应用程序进程更改,且确保不会读取由另一个应用程序进程所更改的任何行,直至该进程落实了这些更改。也就是说,不可能出现“不可重复读”情形。
与可重复读不同,使用“读稳定性”时,如果您的应用程序多次发出相同的查询,那么有可能看到附加的幻像行(幻像读现象)。重新引用扫描 10000 行的示例时,“读稳定性”只锁定限定的行。这样,使用“读稳定性”时,只检索 10 行,且只对那十行挂起锁定。将它与“可重复读”对比,在本示例中,可重复读会在所有的 10000 行上挂起锁定。挂起的锁定可以是共享、下次共享、更新或互斥锁定。
注: “读稳定性”DB2隔离级别确保在应用程序看到数据之前所有返回的数据保持不变,即使使用了临时表或行分块也是如此。
“读稳定性”DB2隔离级别的其中一个目标是提供较高并行性程度以及数据的稳定视图。为了有助于达到此目标,优化器确保在发生锁定升级前不获取表级锁定。
“读稳定性”DB2隔离级别最适用于包括下列所有特征的应用程序:
* 在并发环境下运行
* 需要限定某些行在工作单元运行期间保持稳定
* 在工作单元中不会多次发出相同的查询,或者在同一工作单元中发出多次查询时并不要求该查询获得相同的回答。
【编辑推荐】