與IO相關的等待事件troubleshooting-系列6
'db file parallel read'
當Oracle從多個資料檔案並行讀到記憶體(PGA或Buffer Cache)的非連續緩衝時,可以看到這種等待事件。在恢復操作或為了優化而預處理緩衝(代替執行多個單塊讀)時也會有這種等待事件。
如果這種等待事件的事件佔據大部分,可以按照“db file sequential read”的處理方法。
Direct Path Reads and Writes
直接路徑讀與寫
'direct path read'
Document 50415.1WAITEVENT: "direct path read" Reference Note
'direct path write'
Document 50416.1 WAITEVENT: "direct path write" Reference Note
'direct path read (lob)'
'direct path write (lob)'
當資料庫程式在磁碟與程式PGA記憶體之間執行一些特殊型別的多塊IO操作時,會出現這種等待事件,這種操作會繞過Buffer Cache。可以同步或非同步兩種方式執行這樣的IO操作。
使用這種方式的一些例子:
1. 當記憶體排序區滿了,使用臨時表空間排序時,對IO的排序操作。
2. 並行執行(查詢和DML)。
3. 預讀操作(buffer預處理)。
4. 直接讀取操作。
5. 對LOB段的IO操作(LOB段不會快取到Buffer Cache)。
用這種方式中等待的時間都會被記錄(不會衡量用於執行IO操作的時間),但不能用Statspack的“Top 5 Wait/Timed Events”節中列表的相對位置來評估他們的真實影響。
調優的綱領:
1. 建議使用非同步IO。
2. 在Oracle 8i,通過設定DB_FILE_DIRECT_IO_COUNT例項引數最小化IO請求數量,DB_BLOCK_SIZE x DB_FILE_DIRECT_IO_COUNT = 系統的max_io_size。
在Oracle 8i中,預設值是64個塊。
(在Oracle 9i,他被_DB_FILE_DIRECT_IO_COUNT引數取代,這個引數控制以位元組(不是塊)為單位的直接IO容量)。預設值是1Mb,但是如果系統的max_io_size更小,那預設值也會被縮小。
可參考:Document 47324.1 Init.ora Parameter "DB_FILE_DIRECT_IO_COUNT" Reference Note。
3. 調整記憶體排序區,以使磁碟排序的磁碟IO最小化。
在9i之前,使用自動SQL執行記憶體管理。(Document 147806.1 Automated SQL Execution Memory Management)
在8i,手動調整不同的排序區。(Document 109907.1 How to Determine an Optimal SORT_AREA_SIZE)
4. 對於LOB段,可以儲存到作業系統的檔案系統中。
Buffer Cache能夠提供一些記憶體緩衝。
5. 通過查詢V$SESSION_EVENT(等待事件)或V$SESSTAT(統計資料),明確執行直接IO操作的session。
'physical reads direct', 'physical reads direct (lob)',
'physical writes direct' & 'physical writes direct (lob)'
對這些SQL語句調優。
6. 根據V$FILESTAT或Statspack的“File IO Statistics”節,明確哪些資料檔案是磁碟儲存的瓶頸,將他們移到其他磁碟。
(未完待續)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7192724/viewspace-773858/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 與IO相關的等待事件troubleshooting-系列9事件
- 與IO相關的等待事件troubleshooting-系列8事件
- 與IO相關的等待事件troubleshooting-系列7事件
- 與IO相關的等待事件troubleshooting-系列5事件
- 與IO相關的等待事件troubleshooting-系列4事件
- 與IO相關的等待事件troubleshooting-系列3事件
- 與IO相關的等待事件troubleshooting-系列2事件
- 與IO相關的等待事件troubleshooting-系列1事件
- 【效能調整】等待事件(七) io相關等待查詢指令碼事件指令碼
- zt_eygle大師_如何與io相關的wait event等待事件AI事件
- buffer cache與相關的latch等待事件事件
- latch 相關等待事件事件
- 等待事件相關(zt)事件
- 【等待事件之二】log 相關的等待事件
- gc 等相關等待事件描述GC事件
- log file switch相關等待事件事件
- 【效能調整】等待事件(五)log相關等待事件
- 第6 章、解釋與鎖有關的等待事件事件
- Dataguard主庫上與redo transport service相關的等待事件事件
- 【等待事件】等待事件系列(5.1)--Enqueue(佇列等待)事件ENQ佇列
- oracle library cache相關的等待事件及latchOracle事件
- 閒聊oracle SQL*Net相關的空閒等待事件OracleSQL事件
- SQL Server郵件相關SQL語句出現嚴重的ASYNC_NETWORK_IO等待事件案例SQLServer事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write”Oracle事件
- 【等待事件】等待事件系列(1)--User I/O型別事件型別
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file parallel write”Oracle事件Parallel
- 【TUNE_ORACLE】等待事件之IO等待“direct path write temp”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“read by other session”Oracle事件Session
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- 與日誌有關係的幾個等待事件的解析事件
- 第7 章、解釋與延遲有關的等待事件事件
- sql執行期間相關的等待SQL
- 基礎IO相關操作
- 關於log file sync等待事件的描述事件
- 關於DFS lock handle等待事件事件
- 5G與WiFi6相愛相殺的關係WiFi