ABAP 系统里 SAP Locks 和 Database Locks 的区别

看下面这张图:

SAP LUW 和 SAP 锁的持续时间显示在下图左侧。

对话工作流程(Dialog Work Process)执行包含三个屏幕(输入窗口)的 SAP 对话事务。 每个屏幕对应一个数据库LUW。 一旦用户进行了输入,数据库 LUW 就结束

然后通过对话工作进程恢复处理。 第二次用户输入后,处理完成,SAP LUW 的对话框部分结束。

注意 Transaction 不必仅由一个对话工作流程来处理。 对于每个屏幕,ABAP Dispatcher 只需搜索一个空闲的工作进程来进行处理即可。

在此示例中,在事务的第一个屏幕上请求 SAP Lock. 这个 Lock 一直存在,直到数据库中的应用程序数据发生更改为止,也就是说,在大多数情况下,直到 SAP Update Process 执行完成为止,SAP Lock 才会释放。由于不涉及数据库锁,因此不会造成性能损失。

数据库锁仅在数据库 LUW 的持续时间内存在,如上图右侧所示。

在此期间 SAP 系统中所做的更改,才会实际上被更新到数据库表中。

SAP Lock 是 SAP 系统中的一个重要组成部分,它是由 SAP 系统的 ENQUEUE 服务提供的。当一个用户开始更改数据时,SAP 锁会被设置,以防止其他用户同时更改同一份数据。例如,如果一个用户正在编辑一个客户的详细信息,SAP 锁会防止其他用户在此过程中编辑同一个客户的详细信息。

SAP 锁有三种类型:共享锁,写锁和优化锁。共享锁允许多个用户同时读取同一份数据,但不允许他们更改数据。写锁则允许一位用户读取和修改数据,同时阻止其他用户同时进行这些操作。优化锁是一种特殊类型的锁,它允许一位用户在锁定期间更改数据,同时允许其他用户读取最新的数据。

然后,我们来看看数据库锁。数据库锁是由底层数据库系统提供的,用来在更改数据时保护数据的一致性和完整性。数据库锁可以在行级别,页面级别或表级别上设置。例如,如果一个用户正在更新一行数据,数据库锁会防止其他用户同时更新或删除这一行数据。

猜你喜欢

转载自blog.csdn.net/i042416/article/details/132255053