標籤:oracle
Oracle Study之--Oracle等待事件(3)
Db file parallel read
這是一個很容易引起誤導的等待事件,實際上這個等待事件和並行操作(比如並行查詢,並行DML)沒有關係。 這個事件發生在資料庫恢複的時候,當有一些資料區塊需要恢複的時候,Oracle會以並行的方式把他們從資料檔案中讀入到記憶體中進行恢複操作。
這個等待事件包含三個參數:
Files: 操作需要讀取的檔案個數。
Blocks: 操作需要讀取的資料區塊個數。
Requests: 操作需要執行的I/O次數。
案例分析:
11:06:16 [email protected] prod>conn scott/tigerConnected.11:06:19 [email protected] prod>insert into emp1 select * from emp1;286720 rows created.Elapsed: 00:00:02.0411:07:22 [email protected] prod>/573440 rows created.11:08:07 [email protected] prod>r 1 select event,TOTAL_WAITS,AVERAGE_WAIT from v$system_event 2* where upper(event) like ‘DB FILE%‘EVENT TOTAL_WAITS AVERAGE_WAIT---------------------------------------------------------------- ----------- ------------db file sequential read 4449 .04db file scattered read 1650 .02db file single write 36 .39db file async I/O submit 133 8.69db file parallel read 37 .19Elapsed: 00:00:00.0211:08:20 [email protected] prod>r 1 select event,TOTAL_WAITS,AVERAGE_WAIT from v$system_event 2* where upper(event) like ‘DB FILE%‘EVENT TOTAL_WAITS AVERAGE_WAIT---------------------------------------------------------------- ----------- ------------db file sequential read 7561 .03db file scattered read 1785 .02db file single write 36 .39db file async I/O submit 160 10.29db file parallel read 39 .19Elapsed: 00:00:00.02
Db file parallel write
這是一個後台等待事件,它同樣和使用者的並行操作沒有關係,它是由後台進程DBWR產生的,當後台進程DBWR向磁碟上寫入髒資料時,會發生這個等待。
DBWR會批量地將髒資料並行地寫入到磁碟上相應的資料檔案中,在這個批次作業完成之前,DBWR將出現這個等待事件。如果僅僅是這一個等待事件,對使用者的操作並沒有太大的影響,當伴隨著出現free buffer waits等待事件時,說明此時記憶體中可用的空間不足,這時候會影響到使用者的操作,比如影響到使用者將髒資料區塊讀入到記憶體中。
當出現db file parallel write等待事件時,可以通過啟用作業系統的非同步I/O的方式來緩解這個等待。當使用非同步I/O時,DBWR不再需要一直等到所有資料區塊全部寫入到磁碟上,它只需要等到這個資料寫入到一個百分比之後,就可以繼續進行後續的操作。
這個等待事件有兩個參數:
Requests: 操作需要執行的I/O次數。
Timeouts: 等待的逾時時間。
本文出自 “天涯客的blog” 部落格,請務必保留此出處http://tiany.blog.51cto.com/513694/1535849