Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145749
  • 博文数量: 137
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2019-01-10 10:08
文章分类
文章存档

2008年(137)

我的朋友

分类: 服务器与存储

2008-04-25 08:51:25

文件:如何利用Storage foundation提高ORACLE的I.rar
大小:110KB
下载:下载

    现在,数据库的使用已经深入到了各个行业的方方面面,然而,随着存储数据的增加,对于现在动辄T级数据量的存储,数据库的读写效率越来越成为了系统的瓶颈所在。正因为如此,如何提高数据库的读写速度,已经被越来越多的人所关注。这篇文章将的正是如何利用Veritasstorage foundation,提高保存在其VxFS上面的数据库的读写速度。

注:如果希望使用下列的特性,需要购买storage foundation for oraclelicense

 

  1. Quick I/OCache QIO原理介绍

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数据库是透明的。

 

  1. 如何使用Quick I/O提高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%左右,有兴趣的朋友可以自己试一试。

 

  1. 如何利用Cache QIO提高oracle的读写

使用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,重复上面的13步骤。

6,之后,你可以发现,第二步的数据库读写操作对文件的读写几乎为0,那就是因为SF将你的读写记录到了内存中一个专属的地方,由Storage Foundation来负责对文件的读写,将这一步骤对普通用户屏蔽,提高了数据库用户的数据文件读写速的。其可靠性也是由storage foundation来维护的。

阅读(1773) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~