二维码

[lock] SAP三种常见的锁(E、S、X)区别

Twilight发表于 2016-04-29 11:52Twilight 最后回复于 2016-04-29 11:52 [复制链接] 7880 0

数据库锁:与DB LUW机制类似,数据库本身一般也提供数据锁定机制。数据库将当前正在执行修改操作的所有数据进行锁定,该锁定将随着数据库的LUW的结束而被重置,因而每数据库提交或者回滚之后该锁定就被释放。因为SAP的LUW概念独立于数据库LUW和对话步骤,出于同样的原因,SAP还需要定义自己的数据锁定机制。

SAP锁:SAP LUW要求数据库对象的锁定在SAP LUW结束释放,并且该数据库锁要求对所有SAP程序都可见。 SAP提供了一个逻辑数据锁定机制,该机制基于系统特定的锁定服务应用服务器中的中心锁定表(即将加锁的信息记入数据库表)。一个ABAP程序在访问数据之前,将希望锁定的数据表关键字发送给该表,因而所有的程序在访问一个数据库表之前必须首先判断该表是否已经被锁定了。

SE11创建SAP锁对象
lock.jpg
新版的ECC锁类型更多了,这里我们只讨论常见的三种锁类型:
  • Shared lock(Read Lock)S锁
    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.
    同一时间内允许多个用户读取同一数据,但是一旦某个用户修改数据后,其它用户将不能再访问该数据。只要是加的共享锁,即使是来自不同用户请求,都是可以加上的(即同一时间内可以允许多个不同的用户加共享锁),但只要是已加了共享锁,其他排它类型的锁不能再加了。
  • Exclusive lock(Write Lock )E锁
    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.可重入(可重入即可针对同一数据进行多次加锁)类型的排它锁(独占锁)。该类型的锁住的数据在同一时间内,只能被一个用户读取和修改,但同一时间内其他非同一事务内的排他锁或共享锁的加锁请求都会被拒绝,但在同一事务内的E、S锁还是可以加的。
  • Exclusive but not cumulative lock(Exclusive, not cumulative)X锁
    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.
    排他锁可以在同一事务内多次加,但是不可累计的排他类型锁在同一时间内只能加一次(即使是在同一个事务内),其他所有的加锁请求都会被拒绝。

允许第二次加锁模式
第一次加锁模式
S
E
X
S
否(
否(否)
E
否(
否(
否(否)
X
否(否)
否(否)
否(否)

括号内为同一程序(即同一事务内)内,括号外为非同一程序内
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表