当前位置: 首页 > 知识库问答 >
问题:

悲观锁定vs可序列化事务隔离级别

卫劲
2023-03-14

我有点理解实体锁定和事务隔离级别的目的,但不能得到悲观锁定和可序列化级别之间的区别。据我所知,在这两种情况下,表都被锁定,其他事务都无法访问它,因此在这两种情况下,防止并发修改的操作都是由DB执行的,看起来没有什么区别。谁能解释一下这里是否真的有区别?

共有1个答案

穆飞星
2023-03-14

(我不认为您使用的是ObjectDB。如果您编辑您的问题,并包含与JPA一起使用的特定数据库,您可能会得到更好的答案。)

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

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

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

 类似资料:
  • 我似乎无法找到一个简单的问题的直接答案。如果我在 T-SQL 中创建事务并将隔离级别设置为可序列化,这是否会在我正在修改的表上创建读取锁?

  • 以下链接描述了可序列化事务隔离级别。 http://blogs . msdn . com/b/sqlcat/archive/2011/02/20/concurrency-series-basics-of-transaction-isolation-levels . aspx 假设我有一个用户更新表 另一个用户正在更新表 我想序列化这两个更新语句(意味着在第二个语句开始之前等待第一个完成),尽管我们

  • 我正在编写一个Web应用程序,其中两个不同的用户可以更新一个事物列表,例如待办事项列表。我开始意识到,乐观锁定机制效果最好,因为我不期望高争用。 我正在查看事务隔离级别,现在我有点困惑。看起来不同的事务隔离级别也解决了类似的问题。 这两个不同的概念是如何相互关联的?如果可能,举一个简单的例子。

  • 日安,我了解什么是可序列化的隔离级别以及它与Postgres中的有何不同。可序列化事务能够检测读写周期,因此只有第一次提交会成功。 考虑到这一点,使用行版本控制的乐观锁定是否有意义?行版本控制的行为方式完全相同,如果版本列已更新,则将抛出 Java 异常,这将回滚事务。此外,根据Postgres维基,如果某些更新是在应用程序级代码之外完成的(例如由psql运行的纯SQL查询),则必须创建触发器。所

  • 问题内容: 我在java下有spring项目,使用hibernate查询,我喜欢使用悲观锁定。 在Spring + Hibernate中如何进行悲观锁定? 编辑: 问题: 我想在一个方法中使用悲观锁定,并且我将此方法称为从不同的方法。当我从第一个方法调用它时,悲观的工作效果很好,但是当我从第二个方法调用它时,它给出了(无法提交事务) 例外: 问题答案: http://www.amicabile.c

  • 我在一个游戏服务器上使用Hibernate for ORM,刚刚从每个工作单元的会话/事务切换到每个请求的会话/事务。 由于多个事务可能相互冲突,因此我使用悲观锁定。问题是我经常遇到僵局。现在我的问题是,是否可以在锁定特定实体实例的事务中显式定义范围,或者在指定锁定模式后是否锁定实例直到我提交事务? 如果后者成立,如果我不能任意调度锁定数据库中资源的方法的方法调用,我如何避免每个请求环境中的会话事