gpt4 book ai didi

java - 悲观锁与可序列化事务隔离级别

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:03 29 4
gpt4 key购买 nike

我有点理解实体锁定和事务隔离级别的用途,但无法区分悲观锁定和可序列化级别。据我了解,在这两种情况下,表都被锁定并且没有其他事务可以访问它,因此在这两种情况下,数据库都会采取防止并发修改的措施,这看起来没有区别。有人可以解释一下这里是否真的有区别吗?

最佳答案

(我不假设您使用的是 ObjectDB。如果您编辑您的问题并包括您在 JPA 中使用的特定数据库,您可能会得到更好的答案。)

我不喜欢乐观锁定悲观锁定 这两个术语。我认为乐观并发控制悲观并发控制更准确。锁是处理并发控制问题最常用的方法,但不是唯一的方法。 (Date 在数据库系统简介 中关于并发的章节大约有 25 页长。)

事务管理并发控制 的主题不限于数据的关系模型或 SQL 数据库管理系统 (dbms)。事务隔离级别与 SQL 相关。

悲观并发控制 仅意味着当 dbms 开始 处理您的请求时,您希望 dbms 阻止其他事务访问某物。行为取决于 dbms 供应商。不同的供应商可能会通过锁定整个数据库、锁定某些表、锁定某些页面或锁定某些行来阻止访问。或者 dbms 可能会以其他不直接涉及锁的方式阻止访问。

事务隔离级别是 SQL 尝试解决并发控制问题的方式。事务隔离级别在 SQL 标准中定义。

serializable 事务隔离级别保证并发的、可序列化事务的效果与按特定顺序一次运行一个事务相同。保证描述的是效果——不是实现该效果所需的任何特定类型的并发控制或锁定。

关于java - 悲观锁与可序列化事务隔离级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47441027/

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