gpt4 book ai didi

SQL SUM 表达式和锁

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:39 25 4
gpt4 key购买 nike

我对正确的 SQL 解决方案有疑问。

现状:我的数据库包含包含银行交易(贷记和借记)的表。

  • 信用交易被签署为正数 (+),并且
  • 将交易记为负数 (-)。

使用数据库的应用程序是一个多用户网络应用程序,因此事务表包含许多行,引用不同的用户。一些 webapp 操作需要检查登录用户的实际余额,使用 Transactions 表并保存借记交易(操作价格)。

我在思考这个机制的架构,有一些问题:

  1. 每次用户请求时将余额计算为交易贷方和借方的总和是个好主意吗?我知道这对 db 来说可能效率低下。也许我应该在某处保存快照?

  2. 当一个用户检查“余额”作为贷记/借记交易的 SUM,而另一个用户同时保存借记交易(因为他/她速度更快)时,如何确保数据的一致性?我想到了悲观锁,但我应该锁定什么?我知道在 Postgresql(我使用的数据库)上可能无法使用聚合锁 (SUM)。”

对不起我的英语,我希望我的问题是可以理解的。 :)

最佳答案

我会考虑:

在账户记录中存储余额,以及余额准确的日期。

获取当前余额就是读取账户余额,然后包括自该日期以来的所有交易。

您可以有一个重新计算的计划作业和一个在午夜过后平衡的时间戳。

或者(这是我的首选解决方案):

每次加载一个交易或一批交易时,锁定相关的账户记录并使用插入的值更新它们作为同一交易的一部分

这具有连续访问帐户的优势,这有助于确定交易是否可以继续,因为基于余额计算的决策。

关于SQL SUM 表达式和锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40469103/

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