“当前已有100+用户参与分享,共计发放奖励60000+“
最近在研究如何在IO竞争的情况下,如果存储级别已经无法优化,还有异步IO。我的redo写磁盘的速度已经达到了最大值,无论我如何调整redo大小和组数,无论我如何调整检查点频率都没有什么用处。调整redo大小,之后减少redo切换的频率,增加redo组数只是为了避免所有redo都已经没使用但是业务仍然需要新的日志来记录数据更改。可是如果IO不给力,会造成一堆redo都依然不够的局面。
1、是否已经安装了AIO包 #rpm -qa|grep aio libaio-0.3.107-10.el6.x86_64 libaio-devel-0.3.107-10.el6.x86_64
2、数据库在链接时是否已经加载了aio的包 $/usr/bin/ldd $ORACLE_HOME/bin/oracle | grep libaio libaio.so.1 => /lib64/libaio.so.1 (0x00000032e6800000) 如果没有看到libaio的包,说明Oracle没有链接aio,那么这时就需要重新make oracle的可执行文件: make PL_ORALIBS=-laio -f ins_rdbms.mk async_on
3、数据库的初始化参数开启了异步IO SQL> show parameter disk_asynch_io NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ disk_asynch_io boolean TRUE
SQL> show parameter filesystemio_options NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ filesystemio_options string SETALL
filesystemio_options有4个选项 ASYNCH enable asynchronous I/O on file system files, which has no timing requirement for transmission. DIRECTIO: enable direct I/O on file system files, which bypasses the buffer cache. SETALL: enable both asynchronous and direct I/O on file system files. NONE: disable both asynchronous and direct I/O on file system files.
4、修改内核参数文件/etc/sysctl.conf fs.aio-max-nr = 1048576
5、确认异步IO特性已经使用 #cat /proc/slabinfo | grep kio kioctx 8338 8380 384 10 1 : tunables 54 27 8 : slabdata 838 838 1 kiocb 1377 1665 256 15 1 : tunables 120 60 8 : slabdata 111 111 344 kiocb的第二、三列都不为0,表示ORACLE的异步IO特性已经使用。 |