看下面这张图:
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 锁有三种类型:共享锁,写锁和优化锁。共享锁允许多个用户同时读取同一份数据,但不允许他们更改数据。写锁则允许一位用户读取和修改数据,同时阻止其他用户同时进行这些操作。优化锁是一种特殊类型的锁,它允许一位用户在锁定期间更改数据,同时允许其他用户读取最新的数据。
然后,我们来看看数据库锁。数据库锁是由底层数据库系统提供的,用来在更改数据时保护数据的一致性和完整性。数据库锁可以在行级别,页面级别或表级别上设置。例如,如果一个用户正在更新一行数据,数据库锁会防止其他用户同时更新或删除这一行数据。