首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SAP_锁知识点

SAP_锁知识点

作者头像
用户5495712
发布于 2020-02-16 12:07:34
发布于 2020-02-16 12:07:34
1.2K0
举报
文章被收录于专栏:SAP ERP管理实践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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度解析SAP的锁机制
该文主要是深入探讨在ABAP开发中如何使用SAP提供的应用层的锁机制来保证数据库表中的数据一致性。
用户5495712
2019/09/09
1.6K0
MySQL入门详解(二)---mysql事务、锁、以及优化
1.脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
步履不停凡
2019/09/11
1.2K0
锁对象学习
独占锁(X) 锁定的数据仅可由一个用户进行显示或编辑。对另一独占锁或共享锁的请求均将遭到拒绝。
秋白
2021/11/09
8210
锁对象学习
【SAP技巧】SAP数据更新的触发
应用层运行着DIALOG进程,每个DIALOG进程绑定一个数据库进程,DIALOG进程与GUI进行通信,每次GUI向应用服务器发送请求时都会通过dispatcher服务为每个GUI的请求分配一个Dialog进程.一个程序运行时,GUI与Dialog进行需要多次通信,每次通信使用的Dialog进程不一定相同,在Dialog进程将控制权转给前台的GUI时,由于Dialog进程同数据库进程绑定,会触发一个隐式数据库提交(COMMIT WORK),如果在Dialog进程发生A类型错误,则触发隐式的数据库回滚(Rollback) SAP LUW SAP LUW是DB LUW的一个增强,受体系结构限制,SAP程序每次屏幕切换时(控制权从后台DIALOG进程转移到前台GUI的Session),都会触发一个隐式的数据库提交,一个程序在运行是会产生多个DB 的LUW,这样无法做到全部提交或全部回滚,在某些业务场景下,这种事务的提交机制不足以保证数据的一致性,为此有有了SAP LUW机制.SAP LUW是一种延迟执行的技术,它将本来需要执行的程序块,记录下来.记录的位置在内存或DB Table中,如perform on commit 会记录到内存中,update Funciton module即可以记录到内存也可以记录到VBMOD 和VBMOD表中.系统在执行COMMIT WORK的时候会查询记录,真正执行需要运行的代码,COMMIT WORK一般在最后一个屏幕执行,这样就实现了将跨屏幕的数据更新逻辑绑定到一个DB LUW中,实现复杂情况数据更新的一致性 SAP LUW的绑定方式 CALL FUNCTION...IN UPDATE TASK, 该种方式需要Funciton类型为Update Module类型,同时在调用时使用IN UPDATE TASK参数. 在程序调用 Update Module进行更新时分为本地和非本地 非本地方式: 注册的更新函数记录在VBMOD 和VBMOD表中,COMMIT WORK 时更新操作在UPDATE进程中执行,此时调用程序不等待被调用函数的返回,使用的为异步方式.如果使用COMMIT WORK AND WAIT,此时调用程序等待被调用函数的返回,使用的为同步方式. 本地方式 在调用函数前需要执行 SET UPDATE TASK LOCAL. 这样所有在该语句后使用CALL FUNCTION...IN UPDATE TASK注册的更新函数不会记录到数据库中,而是记录在内存中,在Commit work之后,会从内存取得待执行的函数,在同一个Dialog进程中执行数据的更新,本地方式更新采用的是同步方式,即使在Commit work后指定了and wait参数,仍然是同步执行. 在使用COMMIT WORK之后 SET UPDATE TASK LOCAL的效果会被清除掉,如果COMMIT WORK后注册的更新函数仍然需要采用本地方式,需要再执行一次 SET UPDATE TASK LOCAL语句. 优缺点对比 本地方式不将待执行的更新函数写到数据表中,减少了I/O操作,效率上较高,但由于采用的是同步方式,程序需等待更新结果,用户交互时的会感觉程序运行较慢 非本地方式会将更新结果记录到数据表中,可以通过SM13查看更新情况,同时由于可以进行异步更新,用户交互时感觉会比较快 CALL FUNCTION... IN BACKGROUND TASK DESTINATION, 是一种对RFC函数进行事务绑定的方式
matinal
2020/11/10
1.4K0
【SAP技巧】SAP数据更新的触发
MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)
在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制 的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议。
兔云小新LM
2019/07/30
2.7K0
MySQL 锁常见知识点&面试题总结
MyISAM 仅仅支持表级锁(table-level locking),一锁就锁整张表,这在并发写的情况下性非常差。
用户6256742
2024/07/16
1710
MySQL 锁常见知识点&面试题总结
关于MySQL锁的两个知识点
在MySQL中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read)。快照读,读取的是记录的可见版本 (有可能是历史版本),不用加锁。当前读,读取的是记录的最新版本,并且,当前读返回的记录,都会加上锁,保证其他事务不会再并发修改这条记录。
AsiaYe
2019/11/06
4870
关于MySQL锁的两个知识点
数据库锁
锁和索引是数据库两大核心概念,了解索引,可以从 B+ 树,Hash 索引,页结构,缓存池,索引原则等方面理解。理解锁,要从哪些方面入手?
王小明_HIT
2020/07/06
3860
【MySQL高级】Mysql锁问题
在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
陶然同学
2023/02/24
1.6K0
【MySQL高级】Mysql锁问题
完整性和一致性基石——GBase8s锁浅析
锁的对象是数据库中的数据对象,如关系型数据库中的表、记录、属性、索引等, 对数据对象加锁的时机是在事务对其进行操作之前,向系统发出加锁请求。加锁后事务 T 就取得了对该数据对象的控制,在事务 T 释放它的锁之前,其他事务不能对此数据对象进 行任何操作。封锁是一种排队机制,将并行任务按锁的先后顺序排队,把并行任务变成串行任务。
麒思妙想
2022/04/12
5140
相克军_Oracle体系_随堂笔记014-锁 latch,lock
锁的作用 latch锁:chain,链 LOCK锁 排他锁(X) 共享锁(S)
Alfred Zhao
2019/05/24
4550
MySQL-锁02
之前我们介绍了行级锁,顾名思义行级锁就只是锁住一行或多行数据,因为针对的是行去锁的,因为一个表格内会有很多行数据,要在这些数据中去锁定其中几行数据,是比较耗费资源。而表级锁则是可以锁住整个表,所以相对于行级来说没那么耗费资源,表级锁有两个模式:只读模式和只写模式,这和文件权限里的只读只写有点类似。
端碗吹水
2020/09/23
3510
MySQL-锁02
第15章_锁
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/02
2390
第15章_锁
【黄啊码】MySQL入门—13、悲观锁、乐观锁怎么用?什么是行锁、页锁和表锁?死锁了咋办?
大家好!我是黄啊码,MySQL的入门篇已经讲到第12个课程了,今天我们继续讲讲大白篇系列——数据库锁
黄啊码
2022/11/08
9050
【黄啊码】MySQL入门—13、悲观锁、乐观锁怎么用?什么是行锁、页锁和表锁?死锁了咋办?
MySQL锁详解
转载自http://www.cnblogs.com/luyucheng/p/6297752.html
allsmallpig
2021/02/25
4780
你需要了解关于MySQL锁的知识点,都列在这里了!
大概几个月之前项目中用到事务,需要保证数据的强一致性,期间也用到了mysql的锁,但当时对mysql的锁机制只是管中窥豹,所以本文打算总结一下mysql的锁机制。
Java宝典
2021/01/14
9280
你需要了解关于MySQL锁的知识点,都列在这里了!
一文看懂这篇MySQL的锁机制
检查table_locks_waited和table_locks_immediate状态变量分析
JavaEdge
2022/11/30
1.9K0
一文看懂这篇MySQL的锁机制
ORACLE修改表信息
ALTER TABLE t_jk_MBSZSHXGXXB MODIFY KSSJ NVARCHAR2(20) --修改字段类型
用户5640963
2019/07/28
2.3K0
【史上最详解】Oracle数据库各种"锁" - 看完这篇就够了!
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
IT技术小咖
2019/06/26
20.4K0
【史上最详解】Oracle数据库各种"锁" - 看完这篇就够了!
相关推荐
深度解析SAP的锁机制
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档