乐趣区

关于sap:什么是-SAP-ABAP-系统中的-Optimistic-Locks

在业务应用程序中,尽管很多订单数据以更改模式 (change mode) 显示,但该数据被更改的可能性并不高。

如果不同用户同时拜访数据,则锁定过程必须保证数据更改的一致性。

SAP 引入了锁概念(“enqueue”),用于 ABAP 程序中的锁定。当数据更改的可能性很高时,应用 pessimistic locking(乐观锁)无效。

但思考到在任何给定的工夫点,数据只能在多个并行对话框之一中显示为可更改状态。

在这种状况下,引入除了 pessimistic locking 之外的另一种锁机制就显得有必要了。

Optimistic Locks(乐观锁) 容许在所有并行对话框中将界面切换成可编辑状态。

然而,业务应用程序必须意识到,在用户本人的更改失效之前,最后显示的数据可能曾经产生了更改。

锁定过程必须可能检测到这种状况,以便业务应用程序有可能采取抵触解决策略。

除了锁模式 S、E 和 X 之外,还存在乐观锁的锁模式 O。

如果用户以更改模式显示数据,则设置 Optimistic Locks(模式 O)。

同一对象上的乐观锁不会发生冲突。

如果用户想要保留(更改的)数据,则必须将乐观锁转换为排它锁(模式 E)。

该转换是应用锁定模式 R 实现的。如果有人之前在对象上设置了 非乐观锁,或者另一个 O 锁已被晋升,则转换会失败。

如果降级胜利,则删除该对象上的其余乐观锁,并且该锁体现为 E 锁。

乐观锁与其余锁的区别在于,竞争的乐观锁首先是互相兼容的,并不互相排挤。如果产生锁抵触,则稍后才会验证。对于锁所有者来说,锁抵触体现为锁的内部更改(以后锁用户可留神到),从而使乐观锁生效。

退出移动版