db2读稳定性隔离级别

读稳定性隔离级别

读稳定性隔离级别没有可重复读隔离级别那么严格;因此,它没有将事务与其他并发事务的效果完全隔离。读稳定性隔离级别可以防止脏读和不可重复的读,但是可能出现幻像。在使用这个隔离级别时,只锁定事务实际检索和修改的行。因此,如果一个事务扫描了 1000 行,但只检索 10 行,则只有被检索的 10 行(而不是所扫描的 1000 行)被锁定。因此,如果在同一个事务中发出同一个 SELECT 语句两次或更多次,那么每次产生的结果数据集可能不同。

与可重复读隔离级别一样,在读稳定性隔离级别下运行的事务可以检索一个行集,并可以对它们执行任意操作,直到事务终止。在这个事务存在期间,其他事务不能执行那些会影响这个事务检索到的行集的更新或删除操作;但是其他事务可以执行插入操作。如果插入的行与第一个事务的查询的选择条件匹配,那么这些行可能作为幻像出现在后续产生的结果数据集中。其他事务对其他行所做的更改,在提交之前是不可见的。

那么,读稳定性隔离级别会如何影响旅馆预订应用程序的工作方式呢?当一个顾客检索某个日期段内的所有可用房间列表时,您可以更改这个顾客的列表之外的任何房间的房价。同样,其他顾客可以进行或取消房间预订,如果第一个顾客再次运行同样的查询,其他顾客的操作可能会影响他获得的可用房间列表。如果第一个顾客再次查询同一个日期段内的所有可用房间列表,产生的列表中有可能包含新的房价或第一次产生列表时不可用的房间。