Oracle

增加數據字典大小是否會影響性能

  • December 29, 2017

據我了解,數據字典

  • 是表的集合,是 SYS 模式的一部分(如果不是整個 SYS 模式)
  • 它儲存為“正常”表,因此適用於數據庫表的任何內容也適用於數據字典(例如索引、統計資訊)
  • 它的統計數據應該更新
  • 它總是被記憶體

oracle數據字典的大小和復雜度會影響數據庫性能嗎?

當我在我的數據庫中添加一個新對象時,數據字典中會添加一個新的(或多個)條目。我能想到的一個場景與分區有關。因此,如果我有一個具有分區和子分區的表,我將有一個表條目,每個分區的條目以及數據字典中每個分區子分區的條目。這些條目是在不同的“表”中產生的。想像一下,知道有數千個分區和數百個子分區的表。同樣,這個數量的記錄可能不是 dbms 可以處理的,但是隨著它的增長,它將如何影響其性能呢?

注意:我已經閱讀了很多關於分區是否以及如何影響總體性能的討論。這超出了這個問題的範圍。分區只是我給出的一個例子,用來展示數據字典的容量是如何增長的。

因此,Martin Widlake 關於“數據字典”大小的文章是一個很好的起點。這個術語可能有點模糊,因為 Oracle 儲存了一堆可能相關也可能不相關的東西(例如可執行程式碼、作業歷史等)。

https://mwidlake.wordpress.com/2009/08/03/why-is-my-system-tablespace-so-big/

他指出了一個範例,其中數據字典段“C_OBJ#_INTCOL#”中有 13 Gb。這在技術上是一個集群,而不是一個正常的表,但它實際上只是一個特殊的表,數據被安排在其中,以便相關項目傾向於儲存在磁碟上的同一個塊中。該對象正在儲存表列的直方圖資訊,它告訴您,對於特定表/列,您可能有 60% 的值作為美國,25% 作為加拿大和 15% 墨西哥,或者您有兩倍的 10 月份數據2017 年就像 2016 年 10 月一樣。

這是否能很好地利用空間取決於您的情況。直方圖主要用於確定最佳訪問路徑。例如,給定一個同時具有可用日期和郵政編碼路徑的查詢,這將涉及更少的工作。

歸根結底,這與數據字典的大小無關,而是一個更精確的問題,即在其中儲存額外資訊是否有助於避免錯誤。即便如此,不利的一面往往是收集附加資訊並使其保持最新的影響,而不是儲存資訊所需的空間。

附加:集群往往比正常表佔用更多空間,因為試圖將相關數據放在一起需要為數據增長留出更多空間,而不是在不適合時移動它。

我們在這裡談論什麼樣的性能問題?

如果它是應用程序的查詢性能,它與數據字典大小無關,但與查詢的編寫方式、是否使用索引、重要列上是否存在索引、統計資訊是否最新等有關。或者添加新分區、表和列時的性能問題?這只是添加或更新幾行,對於 oracle rdbms 來說應該不是問題。

我已經看到各種版本(xe、se、ee)上的大型 sysaux 表空間,oem 儲存庫變得太大,或者 addm 沒有按時清除或其他一些 oracle 錯誤。如果在預設位置(AUD 或 FGA_LOG 表)啟用審計,系統表空間可能會增長。您可以查詢 v$sysaux_occupants(用於 sysaux)或 dba_segments 以查看對象的大小,或跟踪它們如何隨時間變化。

引用自:https://dba.stackexchange.com/questions/194028