在這種方法中,主要有兩種途徑來實現對 I/O 的最佳化。
Oracle 使用記憶體緩衝來減少 I/O
通過一些記憶體緩衝,如 Buffer Cache、Log Buffer、Sort Area,可以降低資料庫對 I/O 的請求 。當 Buffer Cache被增大到一定大小時,絕大多數結果可以直接從緩衝中擷取到,而無需從磁碟上讀 取了。而在進行排序操作時,如果 Sort Area 足夠大,排序過程中產生的臨時資料可以直接放在記憶體 中,而無需佔用暫存資料表空間了。
Oracle 調整 multiblock I/O(多資料區塊 I/O)的大小
控制 Mult iblock I/O 的參數叫 DB_FILE_MULTIBLOCK_READ_CO UNT,它控制在多資料區塊讀時一次 讀入資料區塊的數量。適當增加這個參數大小,能夠提高多資料區塊操作(如全表掃描)的 I/O 效率。
例如,讀取100M 資料,如果每次讀取 1M 一共讀取 100 次的效率就比每次讀取 100K 一共讀取 1000 次更快。但是這個數字達到一定大小後,再增加就作用不大了:每次 10M 一共讀 100 次來讀取 1G 的資料的效率和單獨一次讀取 1G 資料的效率是沒有多大區別的。這是因為 I/O 效率受到 2 個因 素的影響:I/O 建立時間和 I/O 傳輸時間。
I/O 建立時間對於不同 I/O 大小來說都是相同的,它決定了對小 I/O 的總的 I/O 時間,增大 Mult iblock I/O大小可以減少 I/O 建立時間;
I/O 傳輸時間與 I/O 大小是成正比的,在小 I/O 時,I/O 傳輸時間一般比 I/O 建立時間少,但 對於大 I/O操作來說,I/O 傳輸時間決定了總的 I/O 時間。因此 Multiblock I/O 大小增大到一定大 小時,它對總的I/O 時間影響就不大了。
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/