数据库数据不一致

时间:2011-05-26 16:10:15

标签: mysql

我的数据库中有三个表BILL,RECHARGE AND SENTBILL表有一个名为UNITBALS的列,RECHARGE表有一个名为UNITS的列SENT表中还有一个名为VOLUME的列。通常应该发生的情况是,当客户为其帐户充值时,他的新UNITS将与他的旧UNITS相加RECHARGE表格和VOLUME表格中已发送邮件总数SENT的总和将从UNITSRECHARGE的总和中减去结果将用于更新UNITBALS表上的BILL。但问题是,当客户为其帐户充值时,BILL表上的UNITBALS会使用新余额更新或有时UNITBALS的更新值会高于应有的值。现在我的数据库存在一种不一致的情况,客户也在抱怨。

1 个答案:

答案 0 :(得分:1)

因此,根据我收集的内容,您将在BILL.UNITBALS上存储汇总计算的结果

特别是

BILL.UNITBALS = SUM(RECHARGE.UNITS) - SUM(SENT.VOLUME)

除非您犯了严重错误,否则可能发生的事情是由于待处理的交易而导致transaction isolation level错过了您应该考虑的值。

由于这个问题,我尽力避免在DB中存储计算结果

通常这意味着每次检索数据时都会进行计算。这可能(或可能不是)性能问题,但至少您有更多机会获得正确的信息。

如果行程罚款过高,我建议您每24小时只进行一次重新调整,并添加免责声明,例如“付款不会在X个工作日内显示在您的帐户中”