這個等待事件在實際生產(chǎn)庫中經(jīng)??梢钥吹?,這是一個用戶操作引起的等待事件,當(dāng)SESSION等待multi-block I/O完成時,會產(chǎn)生這個等待事件。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的舞鋼網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!這通常發(fā)生在兩種情況下:全表掃描(FTS: Full Table Scan)和索引快速掃描(IFFS: index fast full scan)。
Oracle每次讀取一個連續(xù)塊的DB_FILE_MULTIBLOCK_READ_COUNT,并將它們分散到緩沖區(qū)緩存中。如何做到這一點取決于平臺和您正在運行的Oracle的發(fā)布。它也可能根據(jù)所讀取的設(shè)備類型和請求的塊的數(shù)量而變化。
這個等待事件有三個參數(shù):
select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file scattered read'; EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3 ---------- ----------------------------- -------------- --------------- --------------- 154 db file scattered read file# block# blocks
File#: 要讀取的數(shù)據(jù)塊所在數(shù)據(jù)文件的文件號。
Block#: 要讀取的起始數(shù)據(jù)塊號。
Blocks:需要讀取的數(shù)據(jù)塊數(shù)目。
會話信息
查看哪些會話正在執(zhí)行掃描,并跟蹤它們以查看掃描是否被期望是很有用的。
SELECT sid, total_waits, time_waited FROM v$session_event WHERE event='db file scattered read' AND total_waits>0 ORDER BY 3,2;也在V$SESSTAT中查詢具有高“table scans blocks gotten”的會話
表空間 & 數(shù)據(jù)文件
可以查看AWR(或STATSPACK)報告的“Tablespace IO”和“File IO”部分,以及ADDM和ASH輸出。這些文件應(yīng)該顯示哪些tablespaces / files正在為大多數(shù)I/O請求提供服務(wù),并顯示I/O子系統(tǒng)的速度。在“db file scattered read”中所涉及的 tablespaces/files 將有 "Av Blks/Rd" > 1。
讀取文件的文件也可以通過查看V$FILESTAT中BLKS_READ / READS > 1找到(大于1的比率指示出現(xiàn)了多個塊讀?。?。
segments & objects
查看哪些 segments/objects 對象執(zhí)行讀操作。
select event,p1,p2,p3,row_wait_obj# from gv$session where event = 'db file scattered read'; select object_name,object_type from dba_objects where object_id=row_wait_obj#;
SQL
可以查看AWR報告的“Top SQL by Disk Reads”部分,以獲得任何導(dǎo)致高I/O的SQL的線索。如果啟用了統(tǒng)計信息收集,那么V$SQL_PLAN還可以使用完整掃描提供有關(guān)SQL語句的線索。
V$SQL中高DISK_READS語句——在awr的“Top SQL by Disk Reads”部分中顯示。
如果一個數(shù)據(jù)庫的大表掃描過多,那么db file scattered read等待事件可能同樣非常顯著。如果table scans (long tables)的per Trans值大于0,你可能需要增加適當(dāng)?shù)乃饕齺韮?yōu)化你的SQL語句
“db file scattered read”的一些具體點包括:
對SQL進行調(diào)優(yōu)通常會獲得大的收益。
考慮分區(qū)以減少需要掃描的數(shù)據(jù)量。
受影響的對象是否被稀疏地填充?如果是這樣,考慮縮減他們。
考慮高級壓縮,以減少需要訪問的塊的數(shù)量。
小心使用多個緩沖池和緩存選項可能會有幫助。