测试一个数据库,发现io是瓶颈,计划所有的等待事件都是在等IO。
想当然的改成了异步IO
alter system set filesystemio_options=setall scope=spfile;
重新启动数据库后,检查,发现异步IO已经启用:
SQL> SELECT NAME,ASYNCH_IO FROM V$DATAFILE F,V$IOSTAT_FILE I 2 WHERE F.FILE#=I.FILE_NO 3 AND FILETYPE_NAME='Data File'; NAME -------------------------------------------------------------------------------- ASYNCH_IO --------- /mnt/fb8143d4c82911ea800052540048695f/dadb4552c9b911ea800052540048695f_lun_1/ORC L_1572233080_MERGE_20200719_194845_818_1046202681_1 ASYNC_ON /mnt/fb8143d4c82911ea800052540048695f/dadb4552c9b911ea800052540048695f_lun_1/ORC L_1572233080_MERGE_20200719_194845_817_1046202681_1 ASYNC_ON
再测试,让人吃惊的是IO的时间变得更长了!
所以异步IO,不一定比同步快! 解释的原因是:这个数据库本来IO的性能就低,启动异步IO后,单位时间内并发的IO更多了。造成IO竞争得更厉害,磁盘性能进一步下降!