Oracle中的direct path read事件(轉)
在11g中,全表掃描可能使用direct path read方式,繞過buffer cache,這樣的全表掃描就是物理讀了。 在10g中,都是透過gc buffer來讀的,所以不存在direct path read的問題。
direct path read較高的可能原因有:
1. 大量的磁碟排序操作,order by, group by, union, distinct, rollup, 無法在PGA中完成排序,需要利用temp表空間進行排序。 當從臨時表空間中讀取排序結果時,會產生direct path read.
2. 大量的Hash Join操作,利用temp表空間儲存hash區。
3. SQL語句的並行處理
4. 大表的全表掃描,在中,全表掃描的演算法有新的變化,根據表的大小、快取記憶體的大小等資訊,決定是否繞過SGA直接從磁碟讀Oracle11g取資料。而10g則是全部透過快取記憶體讀取資料,稱為table scan(large)。11g認為大表全表時使用直接路徑讀,可能比10g中的資料檔案雜湊讀(db file scattered reads)速度更快,使用的latch也更少。
大量的direct path read等待時間最可能是一個應用程式問題。
direct path read事件由SQL語句驅動,這些SQL語句執行來自臨時的或常規的表空間的直接讀取操作。
當輸入的內容大於PGA中的工作區域時,帶有需要排序的函式的SQL語句將排序結果寫入到臨時表空間中,
臨時表空間中的排序順序串隨後被合併,用於提供最終的結果。讀取排序結果時,
Oracle會話在direct path read等待事件上等待。
DB_FILE_DIRECT_IO_COUNT初始化引數可能影響direct path read的效能。
一個隱含引數:
_serial_direct_read = false 禁用direct path read
_serial_direct_read = true 啟用direct path read
alter sytem set "_serial_direct_read"=never scope=both sid='*';
可以顯著減少direct path read
direct path read較高的可能原因有:
1. 大量的磁碟排序操作,order by, group by, union, distinct, rollup, 無法在PGA中完成排序,需要利用temp表空間進行排序。 當從臨時表空間中讀取排序結果時,會產生direct path read.
2. 大量的Hash Join操作,利用temp表空間儲存hash區。
3. SQL語句的並行處理
4. 大表的全表掃描,在中,全表掃描的演算法有新的變化,根據表的大小、快取記憶體的大小等資訊,決定是否繞過SGA直接從磁碟讀Oracle11g取資料。而10g則是全部透過快取記憶體讀取資料,稱為table scan(large)。11g認為大表全表時使用直接路徑讀,可能比10g中的資料檔案雜湊讀(db file scattered reads)速度更快,使用的latch也更少。
大量的direct path read等待時間最可能是一個應用程式問題。
direct path read事件由SQL語句驅動,這些SQL語句執行來自臨時的或常規的表空間的直接讀取操作。
當輸入的內容大於PGA中的工作區域時,帶有需要排序的函式的SQL語句將排序結果寫入到臨時表空間中,
臨時表空間中的排序順序串隨後被合併,用於提供最終的結果。讀取排序結果時,
Oracle會話在direct path read等待事件上等待。
DB_FILE_DIRECT_IO_COUNT初始化引數可能影響direct path read的效能。
一個隱含引數:
_serial_direct_read = false 禁用direct path read
_serial_direct_read = true 啟用direct path read
alter sytem set "_serial_direct_read"=never scope=both sid='*';
可以顯著減少direct path read
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-1971780/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- direct path read/read temp等待事件事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- Oracle direct path read相關隱含引數Oracle
- [20180905]lob與direct path read.txt
- 【TUNE_ORACLE】等待事件之IO等待“direct path write”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write temp”Oracle事件
- 等待事件db file sequential read、db file scattered read和direct read的區別事件
- 【TUNE_ORACLE】等待事件之IO等待“read by other session”Oracle事件Session
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- Oracle診斷事件列表(轉)Oracle事件
- read by other session等待事件Session事件
- db file scattered read等待事件事件
- db file sequential read等待事件事件
- read by other session 等待事件分析Session事件
- 【等待事件】db file sequential read事件
- 【等待事件】db file scattered read事件
- Oracle:db file scattered readOracle
- cell single block physical read等待事件BloC事件
- Oracle的SYS_CONNECT_BY_PATH函式Oracle函式
- 0316理解db file parallel read等待事件Parallel事件
- [轉] Scala 中的非同步事件處理非同步事件
- 0322理解db file parallel read等待事件2Parallel事件
- Oracle一致性讀(Consistent Read)的原理Oracle
- 《nginx 配置之——domain 轉 path》NginxAI
- Oracle 19c中的等待事件分類 Event WaitsOracle事件AI
- node中的path.resolve
- oracle中多列轉行Oracle
- direct3d---direct11 rendering pipeline3D
- [20210315]理解db file parallel read等待事件3.txtParallel事件
- [20210315]理解db file parallel read等待事件4.txtParallel事件
- I/O上的等待事件 —— control file sequential read/control file parallel write事件Parallel
- webpack中的path、publicPath和contentBaseWeb
- oracle中執行os命令(轉)Oracle
- mysql中read commited與repeatable read兩種隔離級別的測試MySqlMIT
- 【OpenXml】Pptx的多路徑形狀轉為WPF的PathXML
- [轉載] RPATH/LD_LIBRARY_PATH/RUNPATH
- ORACLE 常見等待事件Oracle事件
- 4.2.12 在 Oracle Restart Environment 環境中啟用 FAN 事件OracleREST事件