直接IO

Direct I/O就是当一个进程对系统文件进行IO操作的时候越过系统的文件写缓冲区和读缓存区。
文件系统缓冲区:当系统读写块设备,为了加快读写速度,系统维护了一个块缓冲区。当系统读
数据的时候,先去缓冲区中读,如果没有,再读写磁盘。当系统写数据的时候,先写数据到缓冲
区中。
Oracle数据库本身已经有自己的数据缓冲区,如果再加上系统文件的缓冲区。数据就被缓冲了俩
次,系统的内存就被浪费了。而且如果Oracle的数据库的块比系统文件的块小,那么就会造成系
统的浪费。比如Oracle的块大小是8K,系统文件的块大小是16K,那么Oracle单个读写一次就浪费
了8K的资源。
启用Direct IO
Linux内核2.4开始有Direct I/O功能, 也就是raw device裸设备。raw device可以在低级别被直
接地和并发地访问。最终块设备ext3也支持Direct IO。OCFS和ASM/ASMLib本身也支持Direct IO。
当然前提条件是存储设备需要支持VERYIO。
Direct IO可以用mount在整个文件系统范围内启用,也可以在应用中使用O_DIRECT打开文件。
Direct IO操作的块大小是512字节。

猜你喜欢

转载自zizihaier.iteye.com/blog/1203004