- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
美好的一天,我了解什么是可序列化隔离级别以及它与 REPEATABLE READ
的区别在 Postgres 中。可序列化事务能够检测读写周期,因此只有第一次提交会成功。
考虑到这一点,使用 Hibernate's
有意义吗?基于行版本控制的乐观锁定?行版本控制将以完全相同的方式运行,如果版本列被更新,则将抛出 Java 异常,这将回滚事务。此外,根据 Postgres wiki ,如果某些更新是在应用程序级代码之外完成的(例如由 psql 运行的普通 sql 查询),则必须创建触发器。因此,在我的拙见中,Serializable 级别是对乐观锁定的替代,是这样还是在某些用例中您更喜欢乐观锁定?
最佳答案
不要混淆REPEATABLE READ
和 SERIALIZABLE
: 后者强于前者,前者不会产生额外的性能成本。 REPEATABLE READ
对于乐观锁就足够了。
我通常更喜欢使用数据库技术的乐观锁定,因为这会更便宜。但是,在一种情况下,我更喜欢应用程序端的乐观锁定:如果结果数据库事务需要很长时间。
与 REPEATABLE READ
,您必须执行 SELECT
最后的UPDATE
在同一个数据库事务中。现在事务必须是简短的数据库才能正常工作,因此如果涉及用户交互,请使用 REPEATABLE READ
交易将是一个非启动器。
如果你想知道长的坏处REPEATABLE READ
交易:
ALTER TABLE
)关于java - 你什么时候会在 postgres 可序列化隔离级别上使用 Hibernate 乐观锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68075307/
我正在编写一个 Web 应用程序,两个不同的用户可以在其中更新事物列表,例如待办事项列表。我已经意识到,乐观锁定机制效果最好,因为我不希望出现高争用情况。 我一直在查看事务隔离级别,现在我有点困惑。看
这个问题在这里已经有了答案: Pessimistic versus Optimistic Concurrency (Locking versus Feedback) (3 个答案) 关闭 8 年前。
我是一名优秀的程序员,十分优秀!