新聞中心
這個(gè)等待事件在實(shí)際生產(chǎn)庫(kù)中經(jīng)常可以看到,這是一個(gè)用戶操作引起的等待事件,當(dāng)SESSION等待multi-block I/O完成時(shí),會(huì)產(chǎn)生這個(gè)等待事件。
創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,包括網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營(yíng)銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營(yíng)銷等。創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)公司核心團(tuán)隊(duì)十載專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。
這通常發(fā)生在兩種情況下:全表掃描(FTS: Full Table Scan)和索引快速掃描(IFFS: index fast full scan)。
Oracle每次讀取一個(gè)連續(xù)塊的DB_FILE_MULTIBLOCK_READ_COUNT,并將它們分散到緩沖區(qū)緩存中。如何做到這一點(diǎn)取決于平臺(tái)和您正在運(yùn)行的Oracle的發(fā)布。它也可能根據(jù)所讀取的設(shè)備類型和請(qǐng)求的塊的數(shù)量而變化。
這個(gè)等待事件有三個(gè)參數(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ù)文件的文件號(hào)。
Block#: 要讀取的起始數(shù)據(jù)塊號(hào)。
Blocks:需要讀取的數(shù)據(jù)塊數(shù)目。
一、等待——定位
會(huì)話信息
查看哪些會(huì)話正在執(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”的會(huì)話
當(dāng)這個(gè)等待事件比較顯著時(shí),可以結(jié)合v$session_longops 動(dòng)態(tài)性能視圖來(lái)進(jìn)行診斷,該視圖中記錄了長(zhǎng)時(shí)間(運(yùn)行時(shí)間超過(guò)6 秒的)運(yùn)行的事物。表空間 & 數(shù)據(jù)文件
可以查看AWR(或STATSPACK)報(bào)告的“Tablespace IO”和“File IO”部分,以及ADDM和ASH輸出。這些文件應(yīng)該顯示哪些tablespaces / files正在為大多數(shù)I/O請(qǐng)求提供服務(wù),并顯示I/O子系統(tǒng)的速度。在“db file scattered read”中所涉及的 tablespaces/files 將有 "Av Blks/Rd" > 1。
讀取文件的文件也可以通過(guò)查看V$FILESTAT中BLKS_READ / READS > 1找到(大于1的比率指示出現(xiàn)了多個(gè)塊讀取)。segments & objects
查看哪些 segments/objects 對(duì)象執(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報(bào)告的“Top SQL by Disk Reads”部分,以獲得任何導(dǎo)致高I/O的SQL的線索。如果啟用了統(tǒng)計(jì)信息收集,那么V$SQL_PLAN還可以使用完整掃描提供有關(guān)SQL語(yǔ)句的線索。
V$SQL中高DISK_READS語(yǔ)句——在awr的“Top SQL by Disk Reads”部分中顯示。
如果一個(gè)數(shù)據(jù)庫(kù)的大表掃描過(guò)多,那么db file scattered read等待事件可能同樣非常顯著。如果table scans (long tables)的per Trans值大于0,你可能需要增加適當(dāng)?shù)乃饕齺?lái)優(yōu)化你的SQL語(yǔ)句
二、等待——降低
“db file scattered read”的一些具體點(diǎn)包括:
對(duì)SQL進(jìn)行調(diào)優(yōu)通常會(huì)獲得最大的收益。
考慮分區(qū)以減少需要掃描的數(shù)據(jù)量。
受影響的對(duì)象是否被稀疏地填充?如果是這樣,考慮縮減他們。
考慮高級(jí)壓縮,以減少需要訪問(wèn)的塊的數(shù)量。
小心使用多個(gè)緩沖池和緩存選項(xiàng)可能會(huì)有幫助。
網(wǎng)站名稱:Oracle:dbfilescatteredread
文章出自:http://www.dlmjj.cn/article/pgesgj.html