乐观离线锁
作者:David Rice
通过检测冲突并回滚事务来防止并发业务事务之间的冲突。
有关完整描述,请参阅 EAA 模式 第 416 页
业务事务通常跨一系列系统事务执行。一旦超出单个系统事务的范围,我们就不能再依赖数据库管理系统来确保业务事务将使记录数据保持一致状态。一旦两个会话开始处理相同的记录,数据完整性就会面临风险,并且很可能出现丢失更新的情况。此外,如果一个会话正在编辑另一个会话正在读取的数据,则很可能出现不一致的读取。
乐观离线锁通过验证一个会话即将提交的更改是否与另一个会话的更改冲突来解决此问题。成功的预提交验证在某种意义上相当于获得一个锁,表明可以继续对记录数据进行更改。只要验证和更新在单个系统事务内完成,业务事务将显示一致性。
悲观离线锁 (426) 假设会话冲突的可能性很高,因此限制了系统的并发性,而乐观离线锁则假设冲突的可能性很低。对会话冲突不太可能发生的预期允许多个用户同时处理相同的数据。