調整oracle的競爭
oracle的其中乙個優點時它可以管理每個表空間中的自由空間。oracle負責處理表和索引的空間管理,這樣就可以讓我們無需懂得oracle的表和索引的內部運作。不過,對於有經驗的oracle調優專家來說,他需要懂得oracle是如何管理表的extent和空閒的資料塊。對於調整擁有高的insert或者update的系統來說,這是非常重要的。
要精通物件的調整,你需要懂得freelists和freelist組的行為,它們和pctfree及pctused引數的值有關。這些知識對於企業資源計畫(erp)的應用是特別重要的,因為在這些應用中,不正確的表設定通常是dml語句執行慢的原因。
對於初學者來說,最常見的錯誤是認為預設的oracle引數對於所有的物件都是最佳的。除非磁碟的消耗不是乙個問題,否則在設定表的pctfree和pctused引數時,就必須考慮平均的行長和資料庫的塊大小,這樣空的塊才會被有效地放到freelists中。當這些設定不正確時,那些得到的freelists也是"dead"塊,因為它們沒有足夠的空間來儲存一行,這樣將會導致明顯的處理延遲。
freelists對於有效地重新使用oracle表空間中的空間是很重要的,它和pctfree及pctused這兩個儲存引數的設定直接相關。ü玴ctused設定為乙個高的值,這時資料庫就會盡快地重新使用塊。不過,高效能和有效地重新使用表的塊是對立的。在調整oracle的**和索引時,需要認真考慮究竟需要高效能還是有效的空間重用,並且據此來設定表的引數。以下我們來看一下這些freelists是如何影響oracle的效能的。
當有乙個請求需要插入一行到**中時,oracle就會到freelist中尋找乙個有足夠的空間來容納一行的塊。你也許知道,freelist串是放在**或者索引的第乙個塊中,這個塊也被稱為段頭(segment header)。pctfree和pctused 引數的唯一目的就是為了控制塊如何在freelists中進出。雖然freelist link和 unlink是簡單的oracle功能,不過設定freelist link (pctused) 和unlink (pctfree) 對oracle的效能確實有影響。
由dba的基本知識知道,pctfree引數是控制freelist un-links的(即將塊由freelists中移除)。設定pctfree=10 意味著每個塊都保留10%的空間用作行擴充套件。pctused引數是控制freelist re-links的。設定pctused=40意味著只有在塊的使用低於40%時才會回到**的freelists中。
許多新手對於乙個塊重新回到freelists後的處理都有些誤解。其實,一旦由於乙個刪除的操作而令塊被重新加入到freelist中,它將會一直保留在freelist中即使空間的使用超過了60%,只有在到達pctfree時才會將資料塊由freelist中移走。
**和索引儲存引數設定的要求總結
Oracle專家調優秘密 一
前言 在過去的十年中,oracle已經成為世界上最專業的資料庫之一。對於it專家來說,就是要確保利用oracle的強大特性來提高他們公司的生產力。最有效的方法之一是通過oracle調優。它有大量的調整引數和技術來改進你的oracle資料庫的效能。oracle調優是乙個複雜的主題。關於調優可以寫整整一...
Oracle專家調優秘密(二)
sql調優 oracle的sql調優是乙個複雜的主題,甚至是需要整本書來介紹oracle sql調優的細微差別。不過有一些基本的規則是每個oracle dba都需要跟從的,這些規則可以改善他們系統的效能。sql調優的目標是簡單的 消除不必要的大表全表搜尋 不必要的全表搜尋導致大量不必要的i o,從而...
Oracle專家調優秘密(二)
sql調優 oracle的sql調優是乙個複雜的主題,甚至是需要整本書來介紹oracle sql調優的細微差別。不過有一些基本的規則是每個oracle dba都需要跟從的,這些規則可以改善他們系統的效能。sql調優的目標是簡單的 消除不必要的大表全表搜尋 不必要的全表搜尋導致大量不必要的i o,從而...