关于sap:SAP-Infinite-Transaction-with-Update-的一个具体例子

35次阅读

共计 640 个字符,预计需要花费 2 分钟才能阅读完成。

在计算机科学中,事务是一组操作的汇合,这些操作要么全副胜利执行,要么全副回滚,以确保数据的一致性和完整性。

某些企业管理软件的业务事务,被实现为 Infinite Transaction,以节俭事务开始时的 初始化工夫

这种设计离不开 乐观锁, 因为乐观锁在更改理论产生之前不会转换为排他锁(E 锁,全称为 Exclusive Lock). 锁的更新局部被传递到更新过程,并在更新实现后开释。乐观锁的对话局部放弃原样。

看个理论的例子。

  1. 首先调用锁定模式为 O 且_SCOPE= 1 的功能模块(1),因为 _scope = 1, 意味着该锁只有一个所有者:即上图所示的对话框所有者 E_1。
  2. 在事务过程中,首先申请 _SCOPE=2 的雷同锁,并将另一个所有者 (E_2) 增加到其中 (2)。这个锁当初有两个 owner.
  3. 如果要更改数据,则将锁的更新局部转换为 E 锁。这是通过应用锁定模式“R”和_SCOPE=2 来调用 Enqueue Function Module 实现的。此操作会产生两个锁(见下图):对话所有者的 O 锁和更新所有者的 E 锁。

而后调用更新工作 (4) 并执行 COMMIT WORK (5)。

COMMIT WORK 调用更新工作,该工作继承 E 锁和更新所有者 E_2。同时,为对话事务 (E_x) 创立一个新的更新所有者。

更新完结时,这些锁将被开释。当初,再次存在具备对话框所有者 E_1 但没有更新所有者的锁(参见下图)。

上图显示了本示例中这些操作设置了哪些锁、锁具备哪些类型以及它们领有哪些所有者(带有累积计数器)。

锁定操作按工夫程序从上到下进行。

正文完
 0