2011-03-07 78 views
0

在Oracle(DBMS_WM.EnableVersioning)中啓用版本控制(Oracle稱之爲Workspace Management的一部分)的命令會創建無法建立索引的非物化視圖。這是否會導致性能下降,或者查詢視圖時是否會使用_AUX,_LT和_LCK表的索引?使用Oracle DBMS_WM.EnableVersioning時的性能影響

啓用版本控制時除了索引之外是否還有重要的性能問題?

我正在使用Oracle 11g。

回答

4

與大多數情況一樣,這取決於。

  • 您今天是否有查詢需要進行表掃描以獲取其所有數據?或者一切都將通過索引?
  • 什麼是用例?您是否使用Workspace Manager來支持長時間運行的事務?或者將歷史數據保存在一個LIVE工作區中?
  • 行的更改頻率如何?你打算保留多少個版本?

如果現有的查詢,會做表掃描,該表重建每天晚上,並計劃在保持歷史數據永遠,你可能將有重大的性能問題。如果您的所有查詢都使用索引來訪問數據,那麼行很少更改,而您只打算保留幾個歷史版本,那麼基礎表上的索引應該足夠。

我們已經使用Workspace Manager永久保存相對緩慢變化的錶的歷史記錄以及一個月內相對較快的變化表。我們已經使用它在幾個應用程序中的表中維護離散的保存點,以便用戶可以在有趣的時間點永久保存應用程序數據的狀態。總的來說,我們對性能表示滿意,儘管當優化器感到困惑時,複雜的查詢偶爾會進入雜草。

既然你是11g,你也可以考慮Total Recall。這是一個在企業許可證之外的額外成本選項,但它提供了一個更高效的體系結構,用於隨着時間的推移跟蹤數據更改,假定您打算將所有更改存儲在固定的時間段內。另一方面,在DDL中,你可以發出更多的限制,而不會導致歷史被丟棄,這往往是我工作的應用程序中的一個相當嚴重的限制。

+0

會有一些執行表掃描的查詢,我在一個活動工作區中維護歷史記錄。但是,任何特定的行只會改變1-3次。我覺得我們應該沒問題,但是探索WM的替代品可能是明智的。謝謝。 – 2011-03-10 21:06:11