2014-11-25 144 views
3

我正在研究oracle 11g數據庫。系統ATM有許多與交易相關記錄的歷史表。我們遇到的問題是交易歷史信息記錄跨越多個表格。作爲一個例子,我們有TransactionDetail表有版本列和TransactionQuestions表有它自己的版本列。當需要檢索歷史信息時,使用大量視圖從數據庫中獲取這些數據 - 速度非常慢,並且由於版本和許多聯接的大小和複雜性,我們不斷髮現錯誤。海量視圖與歷史記錄表

我們想要採取的方法是將數據保存在多個歷史記錄表中,僅用於以後加入大量視圖中,之後將每個事務的整個系統狀態保存到具有大量列的龐大表中, PK的指數和 - 問題解決。

這將解決我們的性能問題,因爲數據將在沒有聚合的情況下被檢索。
我眼中最大的缺點是表格方法的最大缺點是,如果在SQL視圖結構中存在錯誤,它可以被修復,並且實際的歷史數據不會受到影響,如果機制存在錯誤(將從視圖移到代碼本質上)將數據寫入歷史記錄表 - 數據已損壞並且無法修復。

與組合來自多個歷史記錄表的數據相比,海量歷史記錄表會帶來哪些其他缺點?

回答

3

您是否考慮過創建materialized view?物化視圖具有顯着更好的存儲特性,同時仍然允許規範化的表結構。他們有一些權衡,包括更高的磁盤使用率(基本上形式化「龐大的歷史表」)。這基本上可以創建您的大量歷史記錄表,並且可以讓oracle將繁瑣的序列化變更提交到規範化的表中。