明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Oracle中AIO解析

[摘要]Linux 異步 I/O (AIO)是 Linux 內(nèi)核中提供的一個增強的功能。它是Linux 2.6 版本內(nèi)核的一個標(biāo)準(zhǔn)特性,AIO 背后的基本思想是允許進(jìn)程發(fā)起很多 I/O 操作,而不用阻塞或等...

Linux 異步 I/O (AIO)是 Linux 內(nèi)核中提供的一個增強的功能。它是Linux 2.6 版本內(nèi)核的一個標(biāo)準(zhǔn)特性,AIO 背后的基本思想是允許進(jìn)程發(fā)起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知時,進(jìn)程就可以檢索 I/O 操作的結(jié)果。

同步IO:線程啟動一個IO操作然后就立即進(jìn)入等待狀態(tài),直到IO操作完成后才醒來繼續(xù)執(zhí)行。
異步IO:線程發(fā)送一個IO請求到內(nèi)核,然后繼續(xù)處理其他的事情,內(nèi)核完成IO請求后,將會通知線程IO操作完成

1、--查看系統(tǒng)是否使用異步IO 。 slab是Linux的內(nèi)存分配器,AIO相關(guān)的內(nèi)存結(jié)構(gòu)已經(jīng)分配。

more /proc/slabinfo  grep kio
[root@localhost ~]# grep kio /proc/slabinfo
kioctx 0 0 384 10 1 : tunables 54 27 0 : slabdata 0 0 0
kiocb 0 0 256 15 1 : tunables 120 60 0 : slabdata 0 0 0

看到kiocb行顯示為0,說明異步IO沒有啟動。

2、 查看數(shù)據(jù)庫是否開啟異步io

(11G)SYS@qixindb> show parameter disk_asynch_io
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
disk_asynch_io boolean TRUE
(11G)SYS@qixindb> show parameter filesystem
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
filesystemio_options string none
filesystemio_options 的四種值:
ASYNCH: enable asynchronous I/O on file system files, which has no timing requirement for transmission.
在文件系統(tǒng)文件上啟用異步I/O,在數(shù)據(jù)傳送上沒有計時要求。
DIRECTIO: enable direct I/O on file system files, which bypasses the buffer cache.
在文件系統(tǒng)文件上啟用直接I/O,繞過buffer cache。
SETALL: enable both asynchronous and direct I/O on file system files.
在文件系統(tǒng)文件上啟用異步和直接I/O。
NONE: disable both asynchronous and direct I/O on file system files.
在文件系統(tǒng)文件上禁用異步和直接I/O。

3、 oracle已經(jīng)鏈接了aio的包

[oracle@localhost ~]$ /usr/bin/ldd $ORACLE_HOME/bin/oracle   grep libaio
libaio.so.1 => /lib64/libaio.so.1 (0x0000003e13000000)

說明:檢查顯示oracle已經(jīng)鏈接了aio的包

4、 調(diào)整數(shù)據(jù)庫參數(shù) 開啟aio
數(shù)據(jù)庫中的filesystemio_options參數(shù)設(shè)置為none,看來oracle中也沒有配置異步IO,
這里可以將數(shù)據(jù)庫中的filesystemio_options參數(shù)調(diào)整為setall;

SQL> alter system set filesystemio_options = setall scope=spfile; 
SQL> alter system set disk_asynch_io = true scope=spfile; 
SQL> shutdown immediate;
SQL> startup;

5、查看aio是否生效

[oracle@localhost ~]$ more /proc/slabinfo  grep kio
kioctx 130 160 384 10 1 : tunables 54 27 8 : slabdata 16 16 0
kiocb 16 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 1

補充:出現(xiàn) free buffer waits 等待事件 或者 io不給力的時候, 可以考慮開啟aio。

以上就是Oracle中AIO解析的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。




標(biāo)簽:Oracle中AIO解析