Postgresql 在这种情况下,最佳的事务隔离级别是什么?

Postgresql 在这种情况下,最佳的事务隔离级别是什么?,postgresql,transactions,Postgresql,Transactions,我对数据库和博士后都很陌生。 假设我正在构建一个仪表板应用程序,允许用户编辑和更新它们。由于许多用户可以编辑/更新单个仪表板,我希望确保他们能够处理事务,但同时能够很好地扩展。 我已经阅读文档好几天了,我带着我最初的计划来了: 1.开始事务,在update语句中,postgres将获取该行上的锁(在我们提交/回滚之前,锁是可见的),因此其他用户必须等待。但这并不能解决我的问题 或者使用Repeatable Read启动事务,这意味着每个用户都将相应地获取数据的快照,因此他们可以使用自己的副本并根

我对数据库和博士后都很陌生。 假设我正在构建一个仪表板应用程序,允许用户编辑和更新它们。由于许多用户可以编辑/更新单个仪表板,我希望确保他们能够处理事务,但同时能够很好地扩展。 我已经阅读文档好几天了,我带着我最初的计划来了:

1.开始事务,在update语句中,postgres将获取该行上的锁(在我们提交/回滚之前,锁是可见的),因此其他用户必须等待。但这并不能解决我的问题

  • 或者使用Repeatable Read启动事务,这意味着每个用户都将相应地获取数据的快照,因此他们可以使用自己的副本并根据需要进行更新。然而,我想知道这是否能突破一些我没有考虑过的条件? 有没有其他方法来处理同样的问题

  • 假设应用程序类似于google电子表格。

    我建议使用乐观锁定:

    • 当您从表中选择一行时,请记住它的所有值

    • 当您更新行时,添加一个检查值是否保持不变的
      WHERE
      子句

    • 如果没有更新行,请告诉用户操作失败,因为存在并发修改


    为此,您将坚持默认的
    readcommitted
    隔离级别。

    为此,我建议使用乐观锁定:

    • 当您从表中选择一行时,请记住它的所有值

    • 当您更新行时,添加一个检查值是否保持不变的
      WHERE
      子句

    • 如果没有更新行,请告诉用户操作失败,因为存在并发修改


    为此,您将坚持使用默认的
    读取提交的
    隔离级别。

    请参阅我不久前准备的关于隔离级别的说明:

    大多数教科书对什么是隔离级别都是理论性的,没有从实践的角度进行解释。我的笔记基于postgres,不仅解释了隔离,还解释了一个查询由于其隔离级别而能够阻止另一个查询的情况。 注释中还举例说明了每个隔离级别可能失败的情况

    一般来说,对于大多数作业来说,readcommitted就足够了。Read提交只会产生暂时错误的结果(例如,聚合可能考虑当前正在删除的值)。
    此外,postgres不实现Read Uncommitted。

    请参阅我之前准备的关于隔离级别的说明:

    大多数教科书对什么是隔离级别都是理论性的,没有从实践的角度进行解释。我的笔记基于postgres,不仅解释了隔离,还解释了一个查询由于其隔离级别而能够阻止另一个查询的情况。 注释中还举例说明了每个隔离级别可能失败的情况

    一般来说,对于大多数作业来说,readcommitted就足够了。Read提交只会产生暂时错误的结果(例如,聚合可能考虑当前正在删除的值)。
    此外,postgres不实现Read Uncommitted。

    阅读悲观锁定与乐观锁定,并阅读postgres文档中的并发控制章节。如果您是这些系统的新手,请尽量保持简单和正确。谢谢。是的,我是新来的。但是上述要求对postgres来说是可能的?请阅读悲观锁定与乐观锁定,并阅读postgres文档中的并发控制章节。如果您是这些系统的新手,请尽量保持简单和正确。谢谢。是的,我是新来的。但是以上要求对postgres来说是可能的?链接断开了链接断开了