首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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.7K0
【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.5K0
【SAP技巧】SAP数据更新的触发
锁对象学习
独占锁(X) 锁定的数据仅可由一个用户进行显示或编辑。对另一独占锁或共享锁的请求均将遭到拒绝。
秋白
2021/11/09
8450
锁对象学习
MySQL中的锁(表锁、行锁)
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
用户1205080
2019/03/19
6.3K0
ORACLE修改表信息
ALTER TABLE t_jk_MBSZSHXGXXB MODIFY KSSJ NVARCHAR2(20) --修改字段类型
用户5640963
2019/07/28
2.4K0
你需要了解关于MySQL锁的知识点,都列在这里了!
大概几个月之前项目中用到事务,需要保证数据的强一致性,期间也用到了mysql的锁,但当时对mysql的锁机制只是管中窥豹,所以本文打算总结一下mysql的锁机制。
Java宝典
2021/01/14
9370
你需要了解关于MySQL锁的知识点,都列在这里了!
数据库锁
锁和索引是数据库两大核心概念,了解索引,可以从 B+ 树,Hash 索引,页结构,缓存池,索引原则等方面理解。理解锁,要从哪些方面入手?
王小明_HIT
2020/07/06
3910
相克军_Oracle体系_随堂笔记014-锁 latch,lock
锁的作用 latch锁:chain,链 LOCK锁 排他锁(X) 共享锁(S)
Alfred Zhao
2019/05/24
4650
MySQL锁详解
转载自http://www.cnblogs.com/luyucheng/p/6297752.html
allsmallpig
2021/02/25
4980
完整性和一致性基石——GBase8s锁浅析
锁的对象是数据库中的数据对象,如关系型数据库中的表、记录、属性、索引等, 对数据对象加锁的时机是在事务对其进行操作之前,向系统发出加锁请求。加锁后事务 T 就取得了对该数据对象的控制,在事务 T 释放它的锁之前,其他事务不能对此数据对象进 行任何操作。封锁是一种排队机制,将并行任务按锁的先后顺序排队,把并行任务变成串行任务。
麒思妙想
2022/04/12
5300
MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)
在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制 的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议。
兔云小新LM
2019/07/30
2.8K0
Mysql数据库-mysql锁-MyISAM表锁-InnoDB行锁
相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。下表中罗列出了各存储引擎对锁的支持情况:
Devops海洋的渔夫
2021/03/29
6.7K0
Mysql数据库-mysql锁-MyISAM表锁-InnoDB行锁
MySQL锁机制和锁算法
MyISAM采⽤表级锁(table-level locking)。 InnoDB⽀持⾏级锁(row-level locking)和表级锁,默认为⾏级锁
Java技术债务
2022/08/09
1.4K0
MySQL锁机制和锁算法
MySQL入门详解(二)---mysql事务、锁、以及优化
1.脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
步履不停凡
2019/09/11
1.3K0
MySQL 锁常见知识点&面试题总结
MyISAM 仅仅支持表级锁(table-level locking),一锁就锁整张表,这在并发写的情况下性非常差。
用户6256742
2024/07/16
1890
MySQL 锁常见知识点&面试题总结
MySQL的锁1 MySql的三种锁2 表锁的锁模式3 MyISAM的并发锁4 InnoDB锁问题5 关于死锁6 总结7 索引与锁
1 MySql的三种锁 1.1 表锁 开销小,加锁快 不会出现死锁 锁定粒度大,发生锁冲突的概率最高,并发度最低 1.2行锁 开销大,加锁慢 会出现死锁 锁定粒度小,发生锁冲突的概率最低,并发度最高 1.3页锁 开销和加锁时间介于表锁和行锁之间 会出现死锁 锁定粒度介于表锁和行锁之间,并发度一般 1.4 引擎与锁 MyISAM和MEMORY支持表锁 BDB支持页锁,也支持表锁 Innodb既支持行锁,也支持表锁,默认行锁 //查询表锁争用情况 检查`table_locks_waited`和`table_l
JavaEdge
2018/05/16
2.1K0
【MySQL高级】Mysql锁问题
在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
陶然同学
2023/02/24
1.6K0
【MySQL高级】Mysql锁问题
【史上最详解】Oracle数据库各种"锁" - 看完这篇就够了!
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
IT技术小咖
2019/06/26
20.8K0
【史上最详解】Oracle数据库各种"锁" - 看完这篇就够了!
精通Mysql锁系列
在实际运行的数据库系统中,锁定机制不断在工作,例如当一个用户正在修改某些数据时,MySQL会通过锁定数据来避免其他用户同时读取这些信息此锁定系统包含共享锁(读锁)和排他锁(写锁)。
科技新语
2025/07/29
1180
精通Mysql锁系列
相关推荐
深度解析SAP的锁机制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档