gpt4 book ai didi

sql - 具有 "version"字段的乐观锁与快照隔离级别

转载 作者:行者123 更新时间:2023-12-05 03:13:53 24 4
gpt4 key购买 nike

我想知道这两种乐观锁解决方案的优点/缺点是什么:

  1. 使用“版本”字段并在更新期间检测更改(即使用hibernate @Version 注解)

  2. 在事务上使用快照隔离级别

如果我是正确的,这 2 个解决方案具有相同的行为:如果在事务期间更新了行,则会抛出错误

谢谢

最佳答案

这两个没有相同的行为。使用 hibernate 乐观并发,如果要写入的行在此期间被修改并修改回来是可以的。例如 +1 后跟 -1。也可以修改 hibernate 不检查的列。

快照隔离检查所有列,不比较数据。任何写入,甚至像 x = x 这样的空写入都算数。

快照隔离还可以保证您获得读取的时间点快照。您没有说明您打算用于 (1) 的隔离级别。我假设它不是 SNAPSHOT。因此 (2) 可能会为您提供 hibernate 无法自行提供的保证。

Hibernate 乐观并发适用于分离实体。快照隔离无法做到这一点,因为它需要一个事务来包含您所做的所有操作。

请注意,这两种解决方案都不可序列化,因为它们验证写入但不验证读取。

关于sql - 具有 "version"字段的乐观锁与快照隔离级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28279606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com