ITPub博客

首页 > 应用开发 > IT综合 > SAP Infinite Transaction with Update 的一个具体例子

SAP Infinite Transaction with Update 的一个具体例子

原创 IT综合 作者:i042416 时间:2023-08-20 23:27:39 0 删除 编辑

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

某些企业管理软件的业务事务,被实现为  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 但没有更新所有者的锁(参见下图)。

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

锁定操作按时间顺序从上到下进行。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24475491/viewspace-2977055/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
测试

注册时间:2018-01-20

  • 博文量
    3822
  • 访问量
    1981962