【等待事件】db file scattered read
等待事件db file scattered read
等待事件說明
這個等待事件會在一個多塊IO 完成時發生。它通常在“ FULL TABLE SCAN ”(全表掃描)和“ INDEX FAST FULL SCAN ”(索引快速全掃描)期間發生。 Oracle 每次讀取 DB_FILE_MULTIBLOCK_READ_COUNT 連續的資料塊,並將它們分散到 buffer cache 中的 buffer 中。如何做到這一點取決於你所執行的平臺和 Oracle 版本。根據讀取的裝置型別和請求的塊數量,它也有可能有所不同。
這個IO 是一個很正常的活動,而我們要注意的是不必要或緩慢的 IO 活動。如果等待多塊讀的時間很長,那麼需要確定 Oracle 正在對哪些段 / 物件執行讀操作。需要參考 AWR 中“ Tablespace IO ”和“ File IO ”,以及 ADDM 和 ASH 輸出。這些內容中應該顯示哪些表空間 / 檔案正在處理最多的 IO 請求,並顯示了 IO 子系統的速度。表空間 / 檔案涉及“ db file scattered read ”等待將會顯示 "Av Blks/Rd">1 (值大於 1 表示發生了多塊讀)。還需要參閱 AWR 中“ SQL ordered by Reads ”,瞭解任何 SQL 導致高 IO 的線索。
如果啟用了統計資訊,那麼v$sql_plan 也可以提供關於使用 FULL SCAN 的 SQL 語句的線索。有的時候,檢視哪些會話正在執行掃描並跟蹤它們,以確定掃描是否在預期範圍內是很重要的。以下語句可以檢視哪些會話正在引起等待:
SQL> SELECT sid, total_waits, time_waited
FROM v$session_event
WHERE event='db file scattered read'
and total_waits>0
ORDER BY 3,2;
解決方法
理想情況下,當有一種更快、更有選擇性的方法獲取資料時,我們不希望應用程式的SQL 執行 FULL SCAN 。在這種情況下,我們應該使用查詢調優來最佳化 SQL 。一些具體的 "db file scattered read" 調優方法如下:
- 對 SQL 調優通常最有用,也是 IO 效能最佳化的核心
- 需要考慮使用分割槽來減少需要掃描的資料量
- 確定受影響的物件是否分佈比較分散,如果是,可以對該物件進行縮小
- 考慮使用高階壓縮來減少需要訪問的塊的數量
- 由於分散讀是將資料塊讀取到不同緩衝區中,小心使用多個緩衝池和快取選項可能會有所幫助
---- end ----
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2749364/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- db file scattered read等待事件事件
- 等待事件db file sequential read、db file scattered read和direct read的區別事件
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- db file sequential read等待事件事件
- 【等待事件】db file sequential read事件
- Oracle:db file scattered readOracle
- 0316理解db file parallel read等待事件Parallel事件
- 0322理解db file parallel read等待事件2Parallel事件
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- [20210315]理解db file parallel read等待事件3.txtParallel事件
- [20210315]理解db file parallel read等待事件4.txtParallel事件
- 【TUNE_ORACLE】等待事件之IO等待“db file parallel write”Oracle事件Parallel
- I/O上的等待事件 —— control file sequential read/control file parallel write事件Parallel
- direct path read/read temp等待事件事件
- read by other session等待事件Session事件
- read by other session 等待事件分析Session事件
- log file sync等待事件事件
- 【等待事件】log file sync事件
- cell single block physical read等待事件BloC事件
- 【TUNE_ORACLE】等待事件之IO等待“read by other session”Oracle事件Session
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- 【TUNE_ORACLE】等待事件之日誌等待“log file sync”Oracle事件
- 【WAIT】 log file sync等待事件說明AI事件
- log file sync等待事件處理思路事件
- 【TUNE_ORACLE】等待事件之日誌等待“log file parallel write”Oracle事件Parallel
- [20201204]關於等待事件Log File Sync.txt事件
- read content in a text file in pythonPython
- Solidity事件,等待事件Solid事件
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- db block gets 與 consistent read getsBloC
- [20181130]control file sequential read.txt
- C# read excel file via ExcelDataReaderC#ExcelLDA
- DB BUFFER LRU 列表的latch等待
- The Db2 Recovery History FileDB2
- Selenium等待事件Waits事件AI
- ORACLE 常見等待事件Oracle事件
- latch等待事件彙總事件
- Latch free等待事件(轉)事件