一、关于 I/O 等待时间问题
通常,仅仅增加处理器能力对提高 Oracle 性能几乎毫无裨益。因为无论处理器多快,都要时不时地等待获取磁盘上的数据。当数据链上所有其他部件都在按时钟周期和电子线路的固有速度运转时,硬盘驱动器却依赖磁头围绕磁碟的物理移动机械地运转以获取信息。过去二十年,处理器速度以几何级增加,与此同时,传统存储的存取速度却只增加了一点点(见图 1 ),结果出现了巨大的性能差距。对此感到最痛苦的是数据库服务器,通常它的 I / O 交易远多于其它系统。超快的处理器和大量的带宽常常被浪费掉了,因为存储设备只需要几毫秒来存取所要求的数据。服务器在等待存储,而用户在等待服务器,这就是 I/O 等待时间。与传统磁盘阵列相比,固态盘以其快 250 倍的存取时间( 0.02 毫秒,而不是 5 毫秒)和 80 多倍的 I / O 交易能力(每秒 400,000 IOPS 而不是 5000 IOPS ),可以很好地解决 I/O 等待时间问题。
图 1 :处理器和存储的性能改进比较
二、解决 Oracle 性能的传统方法
对大多数企业来说,由于过重的用户负载导致应用程序性能下降的情况并不鲜见。过去 3 年对数据库服务器的要求已经发生了急剧的变化。数据库系统的用户数量增加了,存储在数据库中的平均数据量也增加了。同时,对更复杂的业务分析的需求又增加了数据库服务器作业的复杂性。更多的用户、更大的数据量和更复杂的查询一起常常导致数据库的反应更加缓慢。对这个问题的下意识反应是查看可能导致数据库性能问题的两个根源:
l 服务器和处理器的性能:当性能减弱时,大多数 IT 部门所做的其中的第一件事,就是为服务器添加处理器和内存或为服务器群添加服务器。
l SQL 语句:企业投资数百万美元从它们的 SQL 语句中挖掘每一滴效率。帮助程序员评估其 SQL 语句的软件工具的成本高达数万美元,对精心评估和代码优化所需的人员成本更高。在过去的几年里出现了几十个专门从事系统优化的咨询公司,他们提供的首要收费服务就是 SQL 优化。
多数情况下,在这两个方面的花费可能很大,而结果往往令人失望,因为对服务器和 SQL 的性能调整并没有解决在通常情况下导致数据库性能差的真正原因:即处理器性能和存储性能之间的差距。在这种情况下,添加服务器和处理器对数据库性能的影响微不足道,反而浪费了资源,因为更多的处理器仍然在等待原本就很慢的存储。 SQL 调优或许可以改善性能,但即使是最好的 SQL 也无法弥补储存 I / O 的不足。在许多情况下,严重依赖于磁盘 I / O 的功能将无法得到应用的支持,特别是那些会导致大的查询并返回大数据集的方案往往会被从应用中删除,以保护应用程序的性能。
当系统管理员遇到存储性能问题时他们经常尝试三种不同的办法:
1 、增加磁盘的数量。向 JBOD 或 RAID 添加磁盘是提高存储性能的方法之一。通过增加磁盘的数量,数据库的 I / O 可以分散在多个物理设备中。与其他方式一样,这种方法对减少瓶颈微不足道。
2 、移动最频繁访问的文件到本地磁盘。这种方法将提供单磁盘驱动器最好的 IO 性能。正如经常指出的那样,单个硬盘驱动器的 IO 能力是非常有限的。单磁盘驱动器最多可以提供 300 IOPS 。快速固态盘可以提供 400,000 IOPS 的能力。
3 、采用 RAID 。常见的方法是从 JBOD (只是一堆磁盘)转换到 RAID 。通常 RAID 系统通过安装在磁盘驱动器前面的带缓存的控制器和在多个磁盘上条带化存储来改善存储性能。 RAID 将提供额外的性能,特别是在使用大量缓存的情况下。
三、关于固态盘(SSD)
严格来说,固态盘(或 SSD )是指任何不依赖于机械部件来输入和输出数据的存储设备。然而,通常情况下, SSD 是指使用记忆体( DDR 或闪存)作为主要存储介质的存储设备。数据直接存储在内存芯片上,并从内存芯片上访问它们。这使 SSD 的存储速度远远大于传统磁存储设备甚至理论上的速度成为可能。 为了充分利用这一速度优势,固态盘通常通过多种高速通道与网络和服务器相连。
DDR 固态盘
区分 DDR 固态盘与传统内存的是 DDR 固态盘的非易失性。 DDR 固态盘 通常包括内部电池和备份磁盘,这样,在断电或关机情况下,电池能够保持足够长的供电确保 DDR 上的数据写到备份磁盘上。正因为如此, DDR SSD 能够具备系统内存的速度而又摒弃了系统内存断电时数据丢失的缺点。 由于在主要数据链中没有机械设备,与传统存储相比,固态盘通常具有较低的维护成本和更高的可靠性(包括较高的平均故障间隔时间)。
图 2: TMS RamSan-440 固态盘阵列内部结构图
带缓存的闪存固态盘
带缓存的闪存固态盘寻求在大 DDR 高速缓存和能够提供快速读取性能、高密度和更低的单位容量价格的闪存之间取得性能平衡。带缓存的闪存固态盘,在缓存命中的情况下速度与 DDR 固态盘是一样快的,即使在缓存未命中的情况下(即直接从闪存读取),仍比一般基于硬盘的解决方案快 20 倍。
转载于:https://blog.51cto.com/chpc2009/380645