以示例解释锁提升(LOCK PROMOTION)的概念


DB2 锁提升是指获取特定资源上更严格锁的过程。DB2 使用锁提升来处理尝试访问同一 DB2 资源的并发进程。基本上,锁有三种类型。

共享锁 (S)

并发进程可以在资源(DB2 表、行、页等)上放置共享锁,但不能更新数据。为了更新数据,并发进程必须将其锁提升到更新锁。

更新锁 (U)

并发进程可以读取数据,但不能更新数据。更新锁表示进程已准备好更新资源,但为了进行实际更新,任何一个进程都可以将其锁提升到排它锁。

排它锁 (X)

一次只能有一个进程持有资源的排它锁。锁所有者可以读取和更新资源。其他并发进程既不能在资源上获取任何锁,也不能访问资源。

我们将通过以下示例了解这一点。

如果有两个 COBOL-DB2 程序——PROG A 和 PROG B 读取 ORDERS DB2 表的同一行。这两个程序都将在包含该 DB2 表行的页面上获取共享锁。现在,如果 PROG A 想要更新此行,则它将在页面上获取更新锁,这称为锁提升,因为锁从共享锁提升到更新锁。

此外,如果 PROG A 想要更新 ORDERS 表,它将等待直到 PROG B 从 ORDERS 表中释放共享锁。一旦 PROG B 释放其共享锁,PROG A 将将其更新锁提升到排它锁以更新表。在 PROG A 持有 ORDERS DB2 表的排它锁期间,任何其他进程或程序都无法在此表上获取任何锁(共享、更新或排它)。

更新于: 2020-11-30

521 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告