代码之家  ›  专栏  ›  技术社区  ›  Alok P

在CockroachDB中没有锁的情况下提交

  •  1
  • Alok P  · 技术社区  · 9 年前

    我想知道酸是怎么进入的 从应用程序程序员的角度来看,它可以在没有锁的情况下工作。希望将其用于会计/ERP应用程序。

    当两个用户同时更新同一个数据库字段(例如总账账户合计字段)时,会发生什么 蟑螂

    我们是否需要考虑除酸/锁以外的其他可能性 PostgreSQL 当我们在应用程序中编写数据库访问代码时?

    或者正在编写用于访问的代码 蟑螂 关系数据库管理系统 关于承诺和一般情况。

    1 回复  |  直到 9 年前
        1
  •  3
  •   Peter Mattis    9 年前

    我试图从应用程序程序员的角度理解CockroachDB中的ACID如何在没有锁的情况下工作。希望将其用于会计/ERP应用程序。

    蟑螂数据库确实有锁,但使用不同的术语。目前正在更新一些关于乐观并发控制的现有文档。

    当两个用户同时更新同一数据库字段(例如总账账户合计字段)时,蟑螂数据库做什么?假设每个字段同时更新许多其他非重叠字段,作为各自事务的一部分。

    其中一个事务将阻止等待另一个事务提交。如果检测到事务之间的死锁,则死锁中涉及的两个事务之一将中止。

    提交时,是否会立即通知中止的应用程序的提交过程?

    对

    当我们在应用程序中编写数据库访问代码时,是否需要考虑其他可能性,例如在ACID/locking PostgreSQL中?

    或者,在提交和一般情况下,编写用于访问CockroachDB的代码是否与访问标准RDBMS的代码相同。

    在高层,你没有什么额外的事情要做。CockroachDB默认为可序列化隔离,这会导致更多事务重新启动,而隔离级别较弱,但其优点是应用程序程序员不必担心异常。