sap锁机制简单理解

       由于工作的需要,最近在研究业务系统数据并发控制问题,曾经写过abap程序,记得sap里有个锁对象,可以对表记录进行锁定操作,于是进行了相关了解,并在此基础上设计了基于MC的锁机制(有时间再献上基于MC的锁机制,供大家批判)。如果觉得下文所述,似曾相识,说明大家对sap所对象的理解已经超越我。

       sap为了同步同时多个用户操作同一数据,防止数据出现不一致性而采用了锁机制。一般 sap会在操作数据前设置锁,防止第二个用户进行修改操作,当操作结束后系统会自动释放锁(当然程序也可以调用解锁函数去解锁)。

       1SAP锁的类型

       1Exclusive lock

       The locked data can be read or processed by one user only. A request for another exclusive lock or for a shared lock is rejected.

       2Shared lock

       Several users can read the same data at the same time, but as soon as a user edits the data, a second user can no longer access this data. Requests for further shared locks are accepted, even if they are issued by different users, but exclusive locks are rejected.

       3Exclusive but not cumulative lock

       Exclusive locks can be requested by the same transaction more than once and handled successively, but an exclusive but not cumulative lock can only be requested once by a given transaction. All other lock requests are rejected.

 

       2TCODE、相关表、多表锁

       1TCODE:可以通过se11来查看和创建锁对象,锁对象创建完毕之后,统会自动创建两个FMENQUEUE_<锁对象名>DEQUEUE_<锁对象名>,分别用来锁定和解锁。

       2)相关表:

      DD25L:组合标题(方式,MC目标,锁定目标)(纪录了锁主表)

      DD25T:

      DD26S:视图的基本表和外来码关系(纪录了所有和锁相关的表)

      DD27S:合计(视图,MC对象,锁定对象)字段;

      3)多表锁

      SE11里创建锁对象,自定义的锁对象都必须以EZ或者EY开头来命名。一个锁对象里只包含一个PRIMARY TABLE,可以包含若干个SECONDARY TABLE。如多表锁:EMEKKOE,主表:EKKO-->E 专用累积,从表:EKPO-->E 专用累积。

 

       3、锁的生命周期

       通常程序一运行就要对特殊记录进行ENQUEUE处理,程序运行完毕之后进行DEQUEUE处理(不显示处理的话,关闭该session的时候,sap会自动DEQUEUE,此处sapN!)。

 

       4、锁的作用范围

       sap锁仅对特定程序起作用,假设A程序改table1的第1条记录,B程序也改table1的第1条记录,A程序一运行就对table1的第1条记录加锁,B程序则未加锁,则B程序仍可以改table1的第1条记录内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值