2008年(137)
分类: 服务器与存储
2008-04-25 08:51:25
|
现在,数据库的使用已经深入到了各个行业的方方面面,然而,随着存储数据的增加,对于现在动辄T级数据量的存储,数据库的读写效率越来越成为了系统的瓶颈所在。正因为如此,如何提高数据库的读写速度,已经被越来越多的人所关注。这篇文章将的正是如何利用Veritas的storage foundation,提高保存在其VxFS上面的数据库的读写速度。
注:如果希望使用下列的特性,需要购买storage foundation for oracle的license。
1. Quick I/O的原理
Unix系统是一个多用户的操作系统,为了保持文件的一致性,操作系统一般会在用户进行读写操作的时候为该文件加一个单写锁(single write lock),这可以保证数据文件的可靠性。然而,为了提高读写速度,Unix操作系统也为应用程序提供了异步读写(asynchronous I/O)和直接读写(direct I/O)的API,允许应用程序不加锁的写入文件。Storage foundation就是利用这个特点, 让数据库文件跳过这些单写锁,按照裸设备的读写方式写这些文件,提高数据库的读写性能。
另外,一般数据库在读写的时候都会保存一份cache,然而文件系统在读写系统文件的时候也会生成一份cache,这样就会有冗余的数据,影响了数据库读写文件的速度。利用Quick I/O可以避免操作系统保留cache,从而在另一方面提高了数据库的读写效率。
2. Cache QIO的原理
众所周知,操作系统读写内存的速度远远高于读写磁盘的速度。所以storage foundation提供了cache quick IO这个特性,可以将一些数据库读写存取频繁的文件直接加载到内存中,从而提高数据库的读写速度。这是由storage foundation负责保证读出和写入这些文件,对于oracle数据库是透明的。
利用Quick I/O这个特性来读写文件,需要将VxFS文件系统的文件转换成Quick IO文件,然后storage foundation就会减少这些文件的读写的锁控制和cache的控制,方便用户的读写。 现在用一个普通的例子,来讲解一下Quick IO的用法:
1,确定目前数据库的数据文件的位置;
2,确定是否该目录属于VxFS文件系统:
3,确定是否Quick IO正在使用
# dbed_checkconfig -S $ORACLE_SID -H
$ORACLE_HOME
输出中可以看到:
Examining Quick I/O settings.
10 files are not configured
to use Quick I/O.
(注:使用该命令的时候,$ORACLE_SID所属的实例必须是启动的
4,获得QIO所能够转换的数据库文件的列表,生成mkqio.dat文件
(注:该命令会自动跳过temporary tablespace的文件,这是因为oracle的临时文件支持把数据写到未分配的存储区域,但是quick IO不支持,所以如果将这种文件转换成Quick IO文件,可能引起oracle的写失败)。
5,停止oracle数据库,否则数据库文件转换时会失败;
6,将VxFS类型的数据库文件转换为Quick文件
#qio_convertdbfiles_ora
7,重启oracle数据库,这样数据库的读写速度就会加快。
一般来说,数据库读写加快的比例和具体用户的需求有关,笔者做了两个2000行的数据更新来做了测试,速度可以提高10%。根据Veritas的说法,这个提高的比例大概在5%-20%左右,有兴趣的朋友可以自己试一试。
使用cache QIO的关键在于统计出来哪些数据库文件被频繁使用,因为内存的总数是有限的,将有限的资源利用到最需要的地方,正是我们这些数据库管理员所追求的。现在来说明一下cache QIO的用法:
1,清空QIO的统计信息;
#qiostat -r /oracle/oradata/glob_ora/*.dbf
#qiostat /oracle/oradata/glob_ora/*.dbf
2,进入数据库,做几个常见的读写操作:
3,再来查询一下哪些文件被读写过了
#qiostat /oracle/oradata/glob_ora/*.dbf
留意这一行:
说明该文件被读写的次数比较多
4,将该文件系统转为Cache QIO文件系统
#vxtunefs -o qio_cache_enable=1 /oracle
(注:关闭就是将该值设置为0);
5,重复上面的1-3步骤。
6,之后,你可以发现,第二步的数据库读写操作对文件的读写几乎为0,那就是因为SF将你的读写记录到了内存中一个专属的地方,由Storage Foundation来负责对文件的读写,将这一步骤对普通用户屏蔽,提高了数据库用户的数据文件读写速的。其可靠性也是由storage foundation来维护的。