让存储服务于数据库应用
TechTarget中国 发表于:12年12月27日 09:43 [转载] IT168
对于日志文件。在判定上述数据库三个组件中优化哪个部分时,索引通常是大部分用户的问题所在。简单来说,几乎所有的数据库都需要进行查询操作,并且在大多数情况下都会使用到索引。通常来讲数据库有越多的索引,其更新处理就会变得越慢。使得这些索引更快速地更新并快速地返回结果几乎都能够提升性能。这些索引会受到并发检索请求数量,以及处理这些请求所花费的时间的影响。索引通常对读取文件操作十分,不过随着索引数量的增加和更新,其需要花费大量的写操作工作。
处理索引引起的性能问题的正确方式主要取决于使用环境。一台单独的存放本地数据的数据库服务器可以通过在服务器上安装一系列镜像驱动器,专门用作存放索引文件来提升性能。即便是将数据存放在存储区域网络(SAN)上单独的服务器也可以采用同样的方式,尤其是在存储网络比较慢的情况下。(比如1Gb的iSCSI以太网或2Gb的光纤通道)
假如数据库通过多台应用服务器进行共享,本地磁盘日志可能并不适合。同样的,这取决于数据库,不过一般来说改进共享存储环境是需要的。这可以简单的通过在SAN环境中设置专用的驱动器来存储索引方式来实现,其运行方式同样需要使用镜像方式而非在普通的RAID组。这甚至可以使用短路程磁盘方式,只使用每块磁盘的外围部分。索引相对较小,通常不需要使用整块驱动器的存储空间。
在所有上述情况下,基于闪存的固态磁盘驱动器(SSD)是一种不错的方式来解决索引的性能问题。由于索引文件尺寸较小,只需花费一块企业级固态磁盘的代价就能够在使用直连存储的数据库服务器上实现客观的性能改善。当使用共享存储时,安装在存储系统上的SSD存储索引文件可以减缓性能问题,虽然这样的代价会相对较高。需要记住的是这两种情况下都需要进行彻底的存储更新。
对于日志文件。日志文件和索引相似,不过其一般只处理写请求,通过上述方式之后同样能够改善性能。不过在使用闪存SSD时要有更多考虑。日志文件的写操作会多出许多,而基于闪存的SSD的整个生命周期中可支持的写操作次数有一定限制。虽然SSD最大写次数在最近几年中得以改善,日志文件这样的工作类型使用基于闪存的SSD仍为时尚早。
在日志文件环境中,当写的次数非常之高时,可以使用支持热交换的多级单元存储 (MLC)驱动器技术,使用基于单层单元存储(SLC)的SSD或甚至考虑基于DRAM技术的SSD。DRAM系统现在可以提供十分可靠断电恢复能力,同时提供较SLC闪存更好的写性能,并且也没有闪存技术中常见的耐久性问题。不过DRAM较之于NAND闪存存储也昂贵许多。
对于数据库。最后这种数据库性能问题是指整个数据库需要加速的情况,而不仅是索引或日志文件。这类问题会初步呈现出来,因为交易事务数量的增长会逐渐超过环境中存储系统的应对能力。这种情形下有两种方法:将整个数据库环境迁移到一个更加快速的存储系统上,抑或是使用基于闪存的缓存技术。
选择全新的,更加快速的存储系统并不总是意味着迁移到基于闪存的存储上。同期的存储设备经过合适的调优也能够提供充足的IOPS。也不必使用先前短程驱动器的方式。如前文所述,短程技术意味着驱动器只格式化使用一般或正常容量的三分之一,即只是每张磁碟的外围部分。这样就改进了响应时间,因为磁盘磁头移动经过磁盘磁道的线性速度在磁碟的外围会快出很多。使用少于每块驱动器的全部容量也增加了驱动器数量,这从另一方面也改善了性能,因为更多的存储访问请求可以并发完成。不过,这种方式代价高昂,浪费严重,并且应用在整个数据库时会消耗大量的电力。
当前大多数企业级存储系统可以提供宽条带化,其允许一个存储系统中的所有驱动器作为一个特殊的卷或逻辑单元号(LUN)使用。其余对性能不敏感的卷同样可以使用这些驱动器而不会干扰到数据库。一些存储系统和存储网络还会允许你设置特定数据类型的优先级,这样这些数据可以首先访问存储带宽。最后,一些存储系统允许将特定的数据类型指定在特定的驱动器上。举例来讲,数据库信息信息可以优先放置在驱动器的外围以取得更好的性能,而文件系统可以放置在稍许慢一些的驱动器内侧。