2011-05-26 51 views
0

我有我的數據庫三個表的BILL,RECHARGE AND SENT .The BILL表中有一個名爲UNITBALS列和RECHARGE表中有一個名爲UNITS柱也SENT表中有一個。什麼叫正常應該VOLUME發生列,當一位顧客爲他的賬戶充值,他的新賬戶UNITS將與他在RECHARGE表格上的舊賬戶UNITS相加,並且SENT賬單上的總髮送消息的總數VOLUME將從表格RECHARGE上的UNITS的總和中扣除,並且結果將會用於更新BILL表上的UNITBALS。但問題n ow是,當客戶給他們的賬戶充值時,BILL表上的UNITBALS用新的餘額更新,或者有時候UNITBALS被更新的值比它應該更高。現在我的數據庫存在一種不一致,客戶是抱怨。數據庫數據不一致

+0

我認爲我們「之前,將不會出現在您的帳戶爲X個工作日內支付」免責聲明需要更多地瞭解這一點。你能否提供用於進行這些更新的DML? – codemonkey 2011-05-26 16:13:23

回答

1

所以從我收集你存儲在BILL.UNITBALS

具體

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

一合計計算的結果,除非你犯了一個嚴重的錯誤,這是怎麼可能的事情是由於一個待處理的交易和transaction isolation level你缺少一個你應該考慮的價值。

因爲這個問題,我嘗試盡我所能來避免存儲在數據庫

計算的結果通常,這意味着我每一次我檢索數據的時間做計算。這可能(或可能不是)性能問題,但至少您有更多機會獲得正確的信息。

如果PERF罰款太高那麼我建議你做一個reconcilation僅每24小時一次,並添加像