首页 > 其他分享 >SAP ABAP Lock 的 Collision Check 机制介绍

SAP ABAP Lock 的 Collision Check 机制介绍

时间:2023-08-14 17:25:51浏览次数:35  
标签:请求 collision lock request Collision ABAP Lock owner table

SAP ABAP 系统使用 Collision Check 机制来检查锁请求是否与现有锁冲突。

如果发生冲突,对话事务的用户会收到一条消息,指示所请求的对象当前已被不同的用户锁定。

注意:对于非对话工作进程(在批量输入中),稍后会再次发出锁定请求。

SAP 官方文档中对 collision check 机制的描述:

There are two steps when checking if a lock request collides with an existing lock: First, the system checks if the lock request collides with an elementary lock in the lock table. If this is the case, the system checks if there is an owner collision. (The same owner may, for example, request a write lock more than once. This is described in Lock Cumulation.)

由此可见,collision check 流程分为两个步骤。

  1. 系统检查锁请求是否和 lock table 中的 elementary lock 产生了冲突。

  2. 如果确实产生了冲突,再检查当前 lock request 是否和 lock table 里的条目产生了 owner collision.

之所以要检查 owner collision,是因为同样的 owner 有可能重复提交写锁请求(write lock request).

如果发生冲突,对话事务的用户会收到一条消息,指示所请求的对象当前已被其他用户锁定。

对于非对话工作进程(在批量输入中),稍后会再次发出锁定请求。

如果满足以下所有条件,则我们称两个 Elementary Lock 发生冲突:

  1. 基本锁(要锁定的表)的名称是相同的。

  2. 锁参数:锁参数是相同的。 每个位置的字母都匹配(这里用@表示的通配符字母对于所有字母都是相同的)。

  3. 至少有一个基本锁不处于读锁定状态。

下图是一些具体的例子。

第三个锁请求,因为请求的是读锁,而 lock table 里也是读锁,因此不存在锁冲突的情况。

第四行 lock table 里已经有 S 即读锁存在,此时试图上一个写锁,E,会失败。

标签:请求,collision,lock,request,Collision,ABAP,Lock,owner,table
From: https://www.cnblogs.com/sap-jerry/p/17629203.html

相关文章

  • 什么是 SAP Lock 机制中的 Lock Table
    SAPABAP系统里,当我们调用SAPLockObject生成的EnqueueFunctionModule对一条数据库表记录上锁时,就会在SAPLockTable中生成一条记录。SAPLock体系中的LockTable位于中央实例的主存(共享内存)中。中央实例中的所有WorkProcess都可以访问锁表。外部应用程序服务......
  • SAP ABAP 系统 SM51 事务码的作用
    副标题:SAPABAP系统中事务码SM51的作用:深入探究系统进程与资源管理SM51是SAP系统中的一个重要事务码,用于监控和管理系统中运行的后台工作进程和应用服务器资源。在本文中,我将详细解释SM51的功能,探讨其作用,并通过案例说明其在实际场景中的应用。SM51事务码的功能SM51事务......
  • EBS: Error:Txn Failed WIP_WORK_ORDER_LOCKED (JOBNAME=XXXXX)
    Error:TxnFailedWIP_WORK_ORDER_LOCKED(JOBNAME=XXXXX)whileWIPCompletionfromOracleWMS. (DocID2624324.1)LastupdatedonMAY15,2023APPLIESTO:OracleWorkinProcess-Version12.2.7andlaterInformationinthisdocumentappliestoanyplatform.......
  • golang简单实现CLHLock,不可重入的clh自旋锁
    如果不想自旋,可以把Lock、waitIsFinish和noticeIsFinish代码中的方式2注释掉,改用方式1。不过实际测试在低并发的情况下,自旋的执行效率更高,要根据实际业务场景选择使用哪种方式。源代码如下:import("runtime""sync/atomic")const(Gosched_Spin_Count=10000......
  • 用Wpf做一个Block编程画板(仿scratch)
    前言,当时想写这个东西(AIStudio.Wpf.Block)主要是陪我儿子学scratch,觉得这种编程语言挺有意思,但是没有想到自己写一个是如此的复杂,感觉给自己挖坑了,后续的工程也非常巨大,先发出一部分来看看,上几个动图。1.helloworld2.加法3.画线本次更新先发布这些内容,后续进展,敬请期待。......
  • ABAP 开发者上云的时候到了 - 现在大家可以免费使用 SAP 云平台 ABAP 环境的试用版了
    之前Jerry已经写了一系列SAPCloudPlatformABAP编程环境的文章,当时使用的环境,是SAP专门为SAP社区导师们创建的。当时也有朋友留言,询问大家何时才能使用到免费的SAP云平台ABAP编程环境。SAP社区上也有世界各地的开发者问这个问题,负责这个话题的同事们的答复大意是:我们一直在努......
  • 本地启动 ABAP Platform Trial 的 Docker 命令行程序
    Docker是一个开源的容器化平台,用于轻松地构建、发布和运行应用程序。DockerDesktop是适用于Windows和Mac的Docker桌面应用程序,它允许用户在本地运行和管理容器化应用程序。在本文中,我们将详细介绍以下两个命令行并解释每个参数的含义:dockerpullsapse/abap-platform-trial:190......
  • 支持本地部署,完全免费的 ABAP 来了 - ABAP Platform Trial 1909 发布
    我曾经编写过一套零基础的ABAP编程学习教程,截至2023年8月2日,总共包含114篇文章:零基础快速学习ABAP有零基础自学ABAP的朋友咨询,如果手头没有ABAP开发环境该怎么办?我在2019年时写过一篇文章,提到了SAP云平台上免费的ABAP编程环境:ABAP开发者上云的时候到了-......
  • SAP ABAP 报表进度显示控件的使用详解试读版
    有些SAPABAP报表包含了多个业务处理步骤,笔者这里举一个例子:计算某个时间段内,系统所有销售订单的总金额。SAP大多数基于ABAP技术栈的销售订单设计,都是采取订单抬头(header)和订单行项目(LineItem)的数据结构。订单的时间段维护在抬头结构上,一张订单可能包含多个行项目,每......
  • sp_lock和sys.dm_tran_locks的用法
    09-sp_lock和sys.dm_tran_locks的用法 一、总结1.网址https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-lock-transact-sql?redirectedfrom=MSDN&view=sql-server-2017(sp_lock)https://docs.microsoft.com/zh-cn/sql/relational-dat......