Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1226061
  • 博文数量: 727
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 8320
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-13 15:42
文章分类

全部博文(727)

文章存档

2011年(1)

2008年(726)

我的朋友

分类: 服务器与存储

2008-07-13 16:44:50

本文是讲述有关Oracle数据库磁盘输入输出性能和优化的各个不同方面的一系列文章中的一篇。每篇技巧性的文章都摘自即将由Rampant科技出版社出版的图书《Oracle磁盘输入输出性能调优》,作者是Mike Ault。从该系列文章的主页上能看到其他即将发布的部分。

什么是自动存储管理?

自动存储管理(ASM)的设计目标是用来简化数据库管理。自动存储管理(ASM)使数据库管理员不需要直接管理在任何一个现代化Oracle数据库实例中都极可能存在的成千上万的Oracle数据库文件。自动存储管理(ASM)采用的方法是使用自动存储管理(ASM)磁盘组。自动存储管理(ASM)磁盘组是由很多磁盘和位于磁盘上的文件构成的一个逻辑单元。使用自动存储管理(ASM),就不再需要对数以千计的Oracle文件进行管理,而只需管理少量的磁盘组。

为了使用自动存储管理(ASM),用来创建数据库结构(例如,表空间、重做日志、档案日志文件和控制文件)的SQL语句, 必须根据对应的自动存储管理(ASM)磁盘组来指定文件位置。然后,自动存储管理(ASM)会为你创建和管理相关的底层文件。

自动存储管理(ASM)是Oracle管理文件(OMF)功能的逻辑扩展。在OMF的以前版本中,系统为用户自动创建和管理文件,但如果使用自动存储管理(ASM),用户会获得额外的特色功能,比如自动存储管理(ASM)磁盘组镜像和条带。自动存储管理(ASM)由Oracle公司原来开发ODM(Oracle磁盘管理器)的团队开发。

自动存储管理(ASM)被设计成保留所有已存在的数据库功能。你的现有的数据库将按它们原来的方式运行。现有的使用或使用最原始设备存储区的数据库也将按它们原来的方式运行。尽管如此,即使是在现有的Oracle 10g数据库中,新文件仍然以自动存储管理(ASM)文件格式创建,而原有文件则以老的方式来管理。这意味着,数据库可能是拥有自动存储管理(ASM)文件和Oracle管理文件的混合体,并且同时手动管理所有这些文件。

为什么使用自动存储管理(ASM)?

在我们检验自动存储管理(ASM)在数据库文件存储堆栈中的角色和位置之前,先让我们看一下当前被不同程度使用的存储管理特色中的一些。如下:

* 直接输入输出
* 异步输入输出
* 条带
* 镜像
* 随处可见的条带和镜像(SAME)和负载均衡

直接输入输出

直接输入输出使用像内存和CPU周期那样的稀有资源,因为Oracle块在SGA和文件系统缓冲区中都将被缓存。通过采用直接输入输出,可以取得非常高的缓冲区命中率。Oracle能比文件系统更高效地处理缓冲区。Oracle使用久经考验的基于缓冲区替代算法的访问计数,这个算法对使用频率和数据块的最近访问时间都非常敏感。

带缓冲的输入输出用Oracle数据来填充文件系统缓冲区,而使用直接输入输出允许非Oracle的数据在文件系统中更有效地缓存。并且,带缓冲的输入输出一般涉及大规模的物理写操作,例如,临时文件写操作。这些写操作被连续地执行及等待,因而它们不能被合并到设备驱动器或者这个堆栈的更低层,除非使用一个回写磁盘缓冲区。这意味着每对组件写操作之间都有持续的物理磁盘的循环迟延。

如果使用缓冲输入输出,重做日志文件写操作的效率也会被严重降低。因为重做日志文件写操作需要写任意数量的日志块,并且日志块相对于文件系统缓冲区而言非常小,所以最后一个重做日志块不能和文件系统缓冲区对齐是很常见的情况。因此,除非目标文件系统块已经在缓冲区里面,否则新的重做(redo)被拷贝到它的文件系统缓冲区的某部分之前,操作系统必须首先从磁盘读取那个块。

为了解决所有这些问题,强烈推荐使用直接输入输出。激活直接输入输出的方式随操作系统的不同而不同,并且依赖于文件系统的类型。在某些情况下,仅仅设置文件系统选项(filesystemio_options)参数就足够了。某些情况下,则需要设置文件系统安装选项。直接输入输出也可以使用特殊操作系统命令来一个文件、一个文件地被配置。自动存储管理(ASM)的使用使我们不再需要配置直接输入输出。

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