我前些天上传了《ORACLE 24×7
技术与技巧》第四章,上面有raw设备的详细介绍。
请见:
http://www.itpub.net/showthread. ... 25&pagenumber=2
作者对raw设备持的是否定的态度。
大家对此有什么看法?请参照自己所熟悉的平台对此作出评论。
转载自:
节选作者原文,详细请见PDF:
......
r a w设备(或r a w硬盘)就是一个未格式化的设备(硬盘)划分。r a w设备没有任何文件系
统安装在其中,对它们的读写是从字符设备驱动器中进行的。由于没有常规的文件系统(例
如U F S、V x F S、N T F S),因此这样的划分被认为是r a w或“未煮过的”。在使用了常规的文件系统之后,文件系统将管理所有的I / O请求,每个I / O请求主要通过文件系统的缓冲器。也就是说,数据首先被写入文件系统缓冲器中,然后与物理硬盘进行同步。当在某个r a w硬盘上创建了O r a c l e文件(例如数据文
件、联机重作日志或控制文件)时,由于文件系统不存在, O r a c l
e将负责进行对硬盘的读写控制。对于已格式化的硬盘,多个常规文件可以共存于一个硬盘划分中,其中每个常规文件在一个大目录或者某个特定的子目录下面。但
是,对于未格式化的硬盘,每个r a w划分只能存放一个常规文件(在考虑O r a c l e时)。也就是说,在r a w划分与O r a c
l e文件之间必须存在一对一的相关性。O r a c l e文件所在的r a w设备必须属于O r a c l e软件所属的用户I D。
许多在非O P S(O r a c l e并行服务器)
环境下(在O S P环境下,强制使用r a w硬盘)使用r a
w硬盘的站点中,笔者发现了一个共同的问题:在设计与配置过程中,操作人员非常热衷于讨论r a w设备的优缺点。虽然他们认为r a
w硬盘的维护比较困难,但仍然决定克服这个困难,使用r a
w设备以获取性能效益。但几个月之后,他们发现并没有得到明显的性能改善,反而带来了系统的不灵活性、不确定性以及正常的停工时间。有些文章毫无根据地声
称使用r a w设备可以获取1 0%到2 0%的性能改善,但在笔者与众多经验丰富的D B A交谈过程中,发现并没有充分的证据能够说明r a
w设备会提高系统性能。因此,在这个问题上笔者只能认为:“是的,r a w设备可能有一定的性能改善”,也不想推荐读者使用r a w设备。
下面将分析r a w设备的优缺点。
1. raw设备的优点
下面这些是r a w设备的优点。
. 由于旁路了文件系统缓冲器而进行直接读写,从而具有更好的性能对硬盘的直接读写就意味着取消了硬盘与文件系统的同步需求,反之亦然。这一点对于纯O
LT P系统非常有用,因为在这种系统中,读写的随机性非常大以至于一旦数据被读写之后,它们在今后较长的一段时间内不会得到再次使用。除了O LT
P,r a w设备还能够从以下几个方面改善D S S应用程序的性能:
. 排序对于D S S环境中大量存在的排序需求, r a w设备所提供的直接写功能也非常有用,因为对临时表空间的写动作速度更快。即使是在初始化参数S O RT _ D I R E C T _W R I T E S被打开的情况下,这个结论也是对的,因为任何写操作都会从中受益(无论是否旁路了S G A)。
. 序列化访问r a w设备非常适合于序列化I / O动作。同样地,D S S中常见的序列化I / O(表/索引的完全扫描)使得r a
w设备更加适用于这种应用程序。多数时候,除非存在严重的硬盘I / O瓶颈,否则由于直接读写所带来的性能改善是非常小的(因为缓冲器I /
O非常快),并且基本上无法被终端用户所察觉。在许多U N I X版本中,由于支持对常规文件系统进行直接I / O的能力,使得r a
w设备不再是进行直接硬盘读写的唯一方法(但要说明的是,“纯”直接I / O只能通过使用r a
w设备得到;文件系统所提供的直接写与文件系统缓冲器有一定的相通性)。
. 为O r a c l e获取更多的内存在常规的文件系统中,宝贵的内存被文件系统缓冲器所占据。当今,大多数主要的产品计算机都
有至少1 0 0 0 M B的内存,从而意味着为文件系统缓冲器分配一些内存不会造成严重的后果。此外,对O r a c l
e内存结构等预先规划与智能配置也能够导致内存的更高使用效率。如果确实使用了r a w设备,但是没有收回文件系统缓冲器,那么这个优点将被丧失。
2. raw设备的缺点
使用r a w设备的缺点非常突出,足以使得那些想要转换到使用r a w设备的站点丧失信心:
. 恢复难度增大在r a w设备上不能使用由O r a c l e所提供的数据文件管理灵活性。任何站点,只要其性能受到过I /
O瓶颈的影响,就会理解在进行数据文件转移时灵活性的重要性。如果发现某个硬盘在绝大多数时候(超过9
0%的时间)都处于忙状态(这样的硬盘被称为“热硬盘”),那么就有可能是这个硬盘上的数据文件正在传输到另一个不太忙的硬盘上。
对于一个常规的文件系统,如果在目标硬盘上有足够的空间,这个任务就相对较简单。但是,r a
w设备将会引入新的问题与复杂性。由于每个文件都需要存放在单独的r a w划分中,因此必须在目标硬盘上有一个可以存放数据文件的空闲r a
w划分。例如,如果r a w硬盘上的数据文件是1 G B,并且这个硬盘上的r a w划分是1 G B外加1 M B(这个1 M B是r a
w划分的开销),因此必须在目标硬盘上有与这个划分相等或者更大的划分存在。这个过程似乎很容易,但各种O r a c l
e表空间的大小并不相同,因此,维护与每个表空间的数据文件大小相当的自由r a w划分是一项非常艰巨的任务,特别是对于大型数据库更为如此。
容量规划是一项非常无聊的工作,因为必须保证有相同大小或者更大的r a w划分,必须对于数据库扩展可用,并且能够在不浪费硬盘空间的情况下进行I / O平衡。此外,许多标准、易用且易记的命令(例如c p、m v、r m等等)不能在r a w设备上正常工作,因此必须引入相对较复杂的命令与用于数据库管理的工具。
. 没有文件系统缓冲器其实,这既是r a w设备的优点,也是其缺点。在那些所读写的数据不久就将被使用的应用程序(包括O LT P与D S
S)中,如果数据没有在S G A中存在,那么r a
w设备将会请求另一个硬盘读出并获取所需的数据。这种情况下,文件系统缓冲器也许会有所帮助,这是因为数据首先在缓冲器中存在,直到缓冲器空间被其他应用
程序所重新使用。如果所需的数据已经在文件系统缓冲器中,那么就可以避免进行硬盘的读写操作,因为操作系统可以从缓冲器中获取数据。
可见,在决定使用r a w设备之前,必须仔细地分析自己的环境与需求。与O P S环境不同,
在这种环境下,是强制使用r a w设备的,应用程序很少牵涉到r a w设备的不灵活性问题。由于
O r a c l e 7与O r a c l e 8都支持直接I / O,操作系统的直接I / O特性使R a w设备几乎没有必要。
正如前面所述,如果应用程序的数据传输率很高以至于可能会产生或者已经正在产生I / O瓶颈,那么r a w设备的使用就很值得。这可以通过b e n c h m a r k来建立。通过使用自动工具,可以模拟产品级通信负载并决定是否会引起I / O瓶颈(虽然使用了最好的物理数据文件放置方法)。还应该注意到,正在使用的S Q L语句也可能会导致高数据传输率问题,因此,进行S Q L语句的优化也有利于减少数据传输负载。
还举了个例子:
.....如果全部使用一种标准大小,那么就不可避免地要将一个很大的空间分配给一个较小的表空间。也就是说,可能会造成空间的极大浪费。例如,假设S
Y S T E M表空间占用了8 0 M B,运行需要移动到一个只有3 0 0 M B的r a w硬盘上,那么这种移动将会导致2 2 0 M
B的硬盘空间浪费。在这种情况下,人们也许会考虑到用2 2 0 M B的空间来存放非S Y S T E
M数据(就是非数据字典数据),例如普通的应用程序表或索引。但是,在一普通的表空间内混合使用多个段(特别是S Y S T E M在中加入n o
n - d a t a - d i c t i o n a r y段)所花费的开销可能比浪费硬盘空间的开销更大。
如果由于正常的数据库增长和空间的浪费而使得所有预先创建的r a w划分最终被用完,D B
A将会被迫从已经在文件系统中存在的空间中添加一个数据文件,而不是立刻去使用新硬盘。这将会使问题更加复杂,因为包括备份与恢复在内的所有维护操作都需
要有文件系统那样的灵活性来处理r a w设备。
因此,必须经过大量的分析之后才能决定应该使用的“标准尺寸”。必须保证这个尺寸不是特别小,以便能够容纳大表空间。例如,如果一个1 0 G
B的表空间使用只有2 0 0 M B的r a w硬盘划分,那么这一个表空间就需要有5
0个数据文件。这样小的标准尺寸将会限制数据库的总大小,这是因为O r a c l
e对硬件与软件都有参数进行限制。增加硬件限制就意味着需要重新创建控制文件,而且一旦到达硬件限制的最大值,就不可再增加数据库的大小了。这一点对于O
r a c l e 7确实很危险,因为其中的硬件限制最大值在1 0 2 2~4 0 0 0个文件之间。O r a c l e
8为了解决这个问题,将最大值增加到了6 4 M~2 5 6 M个文件。任何情况下,数据库实例与控制文件的重新创建都需要系统停工,这对于2
4×7环境是难以接受的。
阅读(576) | 评论(0) | 转发(0) |