Oracle 之 AIO (异步io)

简介:

Linux 异步 I/O (AIO)是 Linux 内核中提供的一个增强的功能。它是Linux 2.6 版本内核的一个标准特性,AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果。

同步IO:线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。
异步IO:线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成

补充:当后台等待事件排在第一的是 db file async I/O submit,这是一个异步IO相关的等待事件,可以考虑开启异步io。

1、--查看系统是否使用异步IO 。 slab是Linux的内存分配器,AIO相关的内存结构已经分配。
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、 查看数据库是否开启异步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.
在文件系统文件上启用异步I/O,在数据传送上没有计时要求。
DIRECTIO: enable direct I/O on file system files, which bypasses the buffer cache.
在文件系统文件上启用直接I/O,绕过buffer cache。
SETALL: enable both asynchronous and direct I/O on file system files.
在文件系统文件上启用异步和直接I/O。
NONE: disable both asynchronous and direct I/O on file system files.
在文件系统文件上禁用异步和直接I/O。

3、 oracle已经链接了aio的包
[oracle@localhost ~]$ /usr/bin/ldd $ORACLE_HOME/bin/oracle | grep libaio
libaio.so.1 => /lib64/libaio.so.1 (0x0000003e13000000)
说明:检查显示oracle已经链接了aio的包

4、 调整数据库参数 开启aio
数据库中的filesystemio_options参数设置为none,看来oracle中也没有配置异步IO,
这里可以将数据库中的filesystemio_options参数调整为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

6、 数据库层面查看是否开启异步io
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');

 

文章可以转载,必须以链接形式标明出处。


本文转自 张冲andy 博客园博客,原文链接:http://www.cnblogs.com/andy6/p/7492016.html    ,如需转载请自行联系原作者
相关文章
|
18天前
|
算法 数据处理 Python
Python并发编程:解密异步IO与多线程
本文将深入探讨Python中的并发编程技术,重点介绍异步IO和多线程两种常见的并发模型。通过对比它们的特点、适用场景和实现方式,帮助读者更好地理解并发编程的核心概念,并掌握在不同场景下选择合适的并发模型的方法。
|
1月前
|
调度 数据库 Python
Python中的并发编程:使用asyncio库实现异步IO
传统的Python程序在面对IO密集型任务时,往往会遇到性能瓶颈。本文将介绍如何利用Python中的asyncio库,通过异步IO的方式来提升程序的效率和性能,让你的Python程序能够更好地处理并发任务。
|
2月前
|
程序员 调度 云计算
Python并发编程的未来趋势:协程、异步IO与多进程的融合
Python并发编程的未来趋势:协程、异步IO与多进程的融合
|
2月前
|
数据采集 Python
Python多线程与异步IO的对比:何时选择哪种并发模型
Python多线程与异步IO的对比:何时选择哪种并发模型
|
2月前
|
开发者 Python
Python中的并发编程与异步IO
在当今快节奏的互联网时代,如何提高程序的执行效率成为了开发者们关注的焦点。本文将探讨Python中的并发编程与异步IO技术,介绍其原理、应用场景以及优缺点,帮助读者更好地理解和运用这些技术来提升程序性能。
|
2月前
|
并行计算 开发者 Python
Python中的并发编程:异步IO与多线程比较
本文将探讨Python中的并发编程方法,着重比较异步IO和多线程两种不同的实现方式。通过对它们的特点、优缺点以及适用场景进行分析,帮助读者更好地理解并发编程在Python中的应用。
24 1
|
3月前
|
数据采集 大数据 API
探索Python异步编程:解密异步IO库的奥秘
本文将深入探讨Python异步编程的核心概念,并重点介绍异步IO库(例如asyncio)的原理和应用。通过对异步编程的理解和实践,我们可以提高Python程序的性能和响应能力,从而提升用户体验。本文将带您走进异步编程的世界,揭示其中的神奇之处,助您在技术领域中更上一层楼。
|
3月前
|
vr&ar 开发者 Python
探索未来的现实世界:混合现实(AR)与增强现实(VR)技术的应用Python异步编程:解放性能的重要利器——异步IO库深入解析
在当今科技飞速发展的时代,混合现实(AR)和增强现实(VR)技术正迅速改变着我们对现实世界的认知和体验。本文将介绍这两种技术的基本原理以及它们在不同领域的广泛应用,包括教育、医疗、旅游、娱乐等。混合现实和增强现实技术为我们带来了全新的沉浸式体验,将人与数字世界融合在一起,为未来的现实世界带来无限可能。 在当今信息爆炸的时代,高效的编程方式成为开发者追求的目标。Python异步编程与其强大的异步IO库(例如asyncio)成为了解放性能的重要利器。本文将深入解析Python异步编程以及异步IO库的原理和使用方法,帮助读者进一步掌握这一技术,提升开发效率。
|
3月前
|
网络协议 Linux API
Linux异步IO之 io_uring 详解及使用代码示例
Linux异步IO之 io_uring 详解及使用代码示例