前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP_锁知识点

SAP_锁知识点

作者头像
用户5495712
发布2020-02-16 20:07:34
1.1K0
发布2020-02-16 20:07:34
举报
文章被收录于专栏:SAP ERP管理实践

一、概览

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

  SAP锁定与数据库物理锁定是不同的,它是一种业务逻辑上的锁定。它不会在物理表上进行加锁,而是将关键字传递给加锁函数,加锁函数会在特定表中加锁信息登记。

  SAP LUW在结束时(提交或回滚),SAP锁定将会隐式解除。

二、SE11创建自定义锁

  自定义锁对象必须用EZ或者EY开头,生成的锁对象里只包含一个PRIMARY TABLE,可以包含若干个SECONDARY TABLE,同时会自动生成两个函数来进行锁管理,分别为ENQUEUE_”LOCK OBJECT”、DENQUEUE_”LOCK OBJECT”,其中”LOCK OBJECT”是锁对象的名称。

三、锁模式

三种锁模式:1、S共享;2、E专用累积;3、X专用不累积

区别如下表:

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

S共享:本身不需要更改数据,但是希望显示的数据不被别人更改。

E专用累积:当更改数据的时候设置为此模式。

X专用不累积:和E类似,但是不允许累加,完全独占。

1、如果你在一个程序里成功对一个锁对象加锁之后,如果模式为S,其他用户不能再对这个锁对象加E、X模式的锁,但是可以加S模式的锁;

2、如果你在一个程序里成功对一个锁对象加锁之后,如果模式为E,其他用户不能再对这个锁对象加E、X、S模式的任意一种锁;

3、如果你在一个程序里成功对一个锁对象加锁之后,如果模式为X,其他用户不能再对这个锁对象加E、X、S模式的任意一种锁;

4、如果你在一个程序里成功对一个锁对象加锁之后,如果模式为S,在这个程序,你还可以再对这个锁对象加S模式的锁,如果没有别的用户对其加S模式的锁,那么你还可以对其加E模式的锁,X模式的不可以;

5、如果你在一个程序里成功对一个锁对象加锁之后,如果模式为E,在这个程序,你还可以再对这个锁对象加E、S模式的锁,X模式的不可以;

6、如果你在一个程序里成功对一个锁对象加锁之后,如果模式为X,在这个程序,你不可以再对这个锁对象加E、X、S模式的锁。

四、SM12查看锁

五、通用加锁和解锁函数

1、ENQUEUE_E_TABLE/DEQUEUE_E_TABLE,没创建锁对象的时候使用;

2、ENQUEUE_ESFUNCTION/DEQUEUE_ESFUNCTION,没创建锁对象的时候使用;

3、ENQUEUE_ES_PROG/DEQUEUE_ES_PROG,用于控制同一个程序不能并发执行;

4、DEQUEUE_ALL,解同一个程序中创建的所有锁。

版权归原作者所有,如有侵权请联系删除。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ERP管理实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 版权归原作者所有,如有侵权请联系删除。
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档