`

[转载]Oracle在操作系统平台上采用异步IO

 
阅读更多

首先解释一下异步IO的概念:和同步IO相对的,当异步过程调用时,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

异步I/O有着以下的优点:异步I/O是和同步I/O相比较来说的,如果是同步I/O,当一个I/O操作执行时,应用程序必须等待,直到此I/O执行完。相反,异步I/O操作在后台运行,I/O操作和应用程序可以同时运行,提高了系统性能;使用异步I/O会提高I/O流量,如果应用是对裸设备进行操作,这种优势更加明显,因此像数据库,文件服务器等应用往往会利用异步I/O,使得多个I/O操作同时执行。

 

异步IO是在多用户、多任务机上产生的,过去我们用的DOS是一种单用户、单任务操作系统,应用程序需要读或写操作时,通过DOS功能调用(INT 21),由功能程序负责读写,应用程序在等待完成,由于DOS的单任务性,不会发生有多个任务同时执行IO操作的。但是在多任务操作系统中,由于多个任务可能同时执行IO操作,操作系统在执行IO操作时,就有同步和异步两种方式:


1.同步方式:一个任务的IO完成后,再开始另一个任务的IO操作;


2.异步方式:IO操作按一定的规则执行,可能先申请的后完成,后申请的先完成。


在单任务系统中,异步方式没有优越性,反而增加了调度的开销,但在多任务系统中,如果按同步方式,先申请先执行,在磁盘IO中,则磁头移动的过程中是不能读写的,定位以后才能读写,这样移动的过程就浪费了,磁盘的效率就低。在异步方式中,磁头移动的过程中,如果途中有其它合适的IO操作,先完成这个IO操作,然后再继续移动,这样效率就提高了,也就有可能后申请,先完成。异步方式在多任务系统中,IO操作的效率是提高很明显的。磁头移动过程,需要一定的规则来进行调度,通常采用“电梯算法”,这个算法具体是:磁头沿一个方向移动,有合适的IO就处理,然后继续移动,直到这个方向的前面没有IO申请,再向反方向移动。


早在80年代,NETWARE操作系统就采用了电梯算法,也就是NETWARE在服务器硬盘上操作速度快的其中一个原因,SCSI硬盘在单任务操作系统中是没什么优越性的,但是在多任务系统中,其效率就很高,就是因为SCSI硬盘在处理IO申请时,采用了电梯算法。(当然SCSI硬盘的平均寻道时间短、平均等待时间短、缓存大也是快速的原因)


到目前为止,所有的多任务操作系统都采用了电梯算法,估计HP小型机也不例外。并且不需要用户设置,系统默认就是采用的。

 

 

 

在数据库应用中,这是典型的多任务应用,采用异步IO是最为明智的,可以说大型数据库毫不例外地从中获得好处,因为IO的时间占用与CPU相比是1000倍以上的,往往IO是数据库的瓶颈,所以IO性能提高可以使数据库的性能相应提高。Oracle 10g中默认支持了异步IO。

分享到:
评论

相关推荐

    ORACLE9i_优化设计与系统调整

    §7.1.1 操作系统安装考虑 91 §7.1.2 Oracle系统安装考虑 92 §7.2 关于创建多个Oracle实例问题 93 §7.3 Oracle系统安装后的优化基础工作 94 §7.3.1 Oracle系统有关目录所有文件的保护 94 §7.3.2 避免新用户使用...

    Oracle9i的init.ora参数中文说明

    值范围: 根据操作系统而定。 默认值 : 1 circuits: 说明 : 指定可用于入站和出站网络会话的虚拟电路总数。 该参数是构成某个例程的总 SGA 要求的若干参数之一。 默认值 : 派生: SESSIONS 参数的值 (如果正在使用...

    ORACLE11G R2 RAC ON HP-UX11.31 IA64

    1.2.4 操作系统版本及位数... 5 1.2.5 系统时间检查... 5 1.2.6 检查AIO(异步IO)是否开启... 6 1.2.7 检查是否存在符合的链接文件... 7 1.2.8 检查网络接口... 7 1.2.9 存储设备检查及设备文件设置... 8 ...

    数据库容灾系统方案.doc

    对大数据量的 系统来说有很大的优势(每天日志量在60G以上),但是对主机、操作系统、数据库版本 等要求一致,且对络环境的要求比较高。 目标系统不需要有主机,只要有存储设备就可以,如果需要目标系统可读,需要...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 oracle版本_spring3.0

    【源码】oracle版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:...

    JAVA上百实例源码以及开源项目

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    操作系统 linux 代码控制 自动化代码检查 sonar 代码规范 阿里巴巴Java开发规范手册 UMPAY——编码规范 日志规范 异常规范 网络 协议 TCP/IP HTTP hession file HTTPS 负载均衡 容器 JBOSS ...

    JAVA上百实例源码以及开源项目源代码

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    java开源包1

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包11

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包2

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包3

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包6

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包5

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包10

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包4

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包8

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包7

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

    java开源包9

    DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列...

Global site tag (gtag.js) - Google Analytics