一用戶的awr報告中出現了read by other session等待事件:session
Top 5 Timed Eventsoracle
Event | Waits | Time(s) | Avg Wait(ms) | % Total Call Time | Wait Class |
---|---|---|---|---|---|
read by other session | 1,742,306 | 23,059 | 13 | 42.1 | User I/O |
db file sequential read | 731,736 | 15,662 | 21 | 28.6 | User I/O |
CPU time | 5,708 | 10.4 | |||
db file scattered read | 195,776 | 4,929 | 25 | 9.0 | User I/O |
db file parallel read | 14,940 | 878 | 59 | 1.6 | User I/O |
經搜索,這個事件是10g對buffer busy wait細分後的一個事件。app
Some respected Oracle professionals have noted a relationship between the traditional "buffer busy wait" and the "read by other session" wait. Check out this outstanding Oracle blog by Glenn Faucett of Sun Microsystems:ide
"Just to keep us on our toes, Oracle decided to refer to "buffer busy waits" as "read by other session" waits in Oracle 10g. I guess this is OK, but it should at least be documented :) "ui
Here is a query to display "read by other session" waits on Oracle 10g:this
SELECT
p1 「file#」,
p2 「block#」,
p3 「class#」
FROM
v$session_wait
WHERE
event = 'read by other session';spa
Confio has a great article on the "Read by other session" wait and its relation to buffer busy waits:.net
"read by other session Definition: When information is requested from the database, Oracle will first read the data from disk into the database buffer cache. If two or more sessions request the same information, the first session will read the data into the buffer cache while other sessions wait.
In previous versions this wait was classified under the 「buffer busy waits」 event. ormHowever, in Oracle 10.1 and higher this wait time is now broken out into the 「read by other session」 wait event. Excessive waits for this event are typically due to several processes repeatedly reading the same blocks, e.g. many sessions scanning the same index or performing full-table scans on the same table. Tuning this issue is a matter of finding and eliminating this contention."htm
Confio concludes with a summary that "read by other session waits" are very similar to buffer busy waits::
"When a session waits on the 「read by other session」 event, it indicates a wait for another session to read the data from disk into the Oracle buffer cache.
If this happens too often the performance of the query or the entire database can suffer. Typically this is caused by contention for 「hot」 blocks or objects so it is imperative to find out which data is being contended for. Once that is known this document lists several alternative methods for solving the issue."
My other notes on segment and buffer busy contention includes: