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