程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 簡討Oracle pctused參數

簡討Oracle pctused參數

編輯:Oracle數據庫基礎

經過長時間學習Oracle pctused參數,於是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。Oracle 的其中一個優點時它可以管理每個表空間中的自由空間。 Oracle 負責處理表和索引的空間管理,這樣就可以讓我們無需懂得 Oracle 的表和索引的內部運作。不過,對於有經驗的 Oracle 調優專家來說,他需要懂得 Oracle 是如何管理表的 extent 和空閒的數據塊。對於調整擁有高的 insert 或者 update 的系統來說,這是非常重要的。

要精通對象的調整,你需要懂得freelists和freelist組的行為,它們和pctfree及Oracle pctused參數的值有關。這些知識對於企業資源計劃( ERP )的應用是特別重要的,因為在這些應用中,不正確的表設置通常是 DML 語句執行慢的原因。

對於初學者來說,最常見的錯誤是認為默認的 Oracle 參數對於所有的對象都是最佳的。除非磁盤的消耗不是一個問題,否則在設置表的pctfree和Oracle pctused參數時,就必須考慮平均的行長和數據庫的塊大小,這樣空的塊才會被有效地放到freelists中。當這些設置不正確時,那些得到的freelists也是 "dead" 塊,因為它們沒有足夠的空間來存儲一行,這樣將會導致明顯的處理延遲。

Freelists 對於有效地重新使用 Oracle 表空間中的空間是很重要的,它和pctfree及pctused這兩個存儲參數的設置直接相關。通過將pctused設置為一個高的值,這時數據庫就會盡快地重新使用塊。不過,高性能和有效地重新使用表的塊是對立的。在調整 Oracle 的表格和索引時,需要認真考慮究竟需要高性能還是有效的空間重用,並且據此來設置表的參數。以下我們來看一下這些freelists是如何影響 Oracle 的性能的。

當有一個請求需要插入一行到表格中時, Oracle 就會到freelist中尋找一個有足夠的空間來容納一行的塊。你也許知道,freelist串是放在表格或者索引的第一個塊中,這個塊也被稱為段頭( segment header )。pctfree和Oracle pctused參數的唯一目的就是為了控制塊如何在freelists中進出。雖然freelistlink 和 unlink 是簡單的 Oracle 功能,不過設置freelistlink (pctused) 和 unlink (pctfree) 對 Oracle 的性能確實有影響。

由 DBA 的基本知識知道,pctfree參數是控制freelistun-links 的(即將塊由freelists中移除)。設置 pctfree=10 意味著每個塊都保留 10% 的空間用作行擴展。Oracle pctused參數是控制freelistre-links 的。設置 pctused=40 意味著只有在塊的使用低於 40% 時才會回到表格的freelists中。

許多新手對於一個塊重新回到freelists後的處理都有些誤解。其實,一旦由於一個刪除的操作而令塊被重新加入到freelist中,它將會一直保留在freelist中即使空間的使用超過了 60% ,只有在到達pctfree時才會將數據塊由freelist中移走。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved