ABout db file async I/O submit ?
本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客
本文链接地址: ABout db file async I/O submit ?
前不见,某客户的系统遭遇性能问题,该环境redo量较大,高峰超过20m/s。 业务应用程序在运行过程之中发现运行时间
不稳定,有时很快,有时很慢。 我通过检查发现了一个比较奇怪的event(db file async I/O submit),以前还真没遇到过,我们先来看下load profile的数据:
可以看到,每秒19m左右的redo size。 我们来看一下top 5 event:
单纯的从top 5来看,貌似看不出来。 实际上我通过监控v$session发现是存在的,我当时利用的是如下监控SQL:
select inst_id,event,count(1) from gv$session where wait_class#<> 6 group by inst_id,event order by 1,3;
top 5 event居然没有,那说明什么问题? 说明该event 是后台的event。awr 报告中仍然 是可以看出来的,如下:
可以看到排第1位的event是 db file async I/O submit。 很明显,从字面意思上来看,就可以判断,该event是跟异步IO相关的等待事件。实际上,该event是Oracle 11.2 引入的一个新的等待事件。关于该event,Oracle metalink有相关文档进行了描述(Doc id :1274737.1),该文档是这样解释的:
According to unpublished
Bug 9649885 – DB FILE ASYNC I/O SUBMIT EVENT NOT TRACKED WHEN DISK_ASYCH_IO = TRUE
when DISK_ASYNCH_IO=TRUE, the wait event ‘db file async I/O submit’ is posted even if the IO calls cannot be performed asynchronously and this is the current behavior.
The tests show the following behavior:
disk_asynch_io filesystemio_options strace DBWR AIO DBWR waits
FALSE NONE pwrite64 NO db file parallel write
FALSE ASYNCH pwrite64 NO db file parallel write
TRUE ASYNCH io_submit/ YES db file parallel write
io_getevents
TRUE NONE pwrite64 NO db file async I/O submit
从metalink 文档来看,即使disk_asynch_io参数设置为true,操作系统本身也支持AIO;也并不代表oracle就能进行AIO操作。可以看到,还必须设置filesystem_options参数,建议设置为ASYNCH或setall即可.我们最后来观察下调整之后awr的情况。如下:
同时db file async I/O submit等待 也明显降低了,同时db file parallel write等待上升,但是其等待时间并不高,仅为246s.
我们可以看到,调整之后db file sequential read的wait times明显降低,降低到2w 秒左右。
补充:在Oracle 11.2版本之中,可以通过试图(v$iostat_file)来直接查询数据库的datafile是否启用了异步IO,如下:
set lines 200
set pagesize 2000
col name for a65
select name, asynch_io
from v$datafile f, v$iostat_file i
where f.file# = i.file_no
and (filetype_name = ‘Data File’ or filetype_name = ‘Temp File’);
One Response to “ABout db file async I/O submit ?”
支持r总!!!
Leave a Reply
You must be logged in to post a comment.