高级事务处理的数据库应用是企业IT系统中较为常见的一种应用,例如网络上的电子交易类的应用都属于这个类型。这类型应用与一些视频流的应用不一样,如果是一个视频流的应用,那么I/O的次数可能并不是非常频繁,但是一次I/O产生的数据传输量会较为巨大,而高级事务处理的特点是,会产生一系列的频繁的离散的I/O请求,每次I/O请求所产生的数据却很小。
磁盘性能是高级事务处理运行性能的关键
高级事务处理数据库(high-transaction database)通常由4~8KB大小的记录构成,这些数据记录一般是被随机访问的。也正是因为每个数据记录的容量都很小,而且数据库的运行是随机读取数据条目,所以数据库的性能很大程度上取决于磁盘存取时间(disk access time)。磁盘存取时间是非常关键的指标,在运行速度较慢的数据库应用中,CPU经常需要长时间等待磁盘I/O操作的完成。
数据库对磁盘I/O的需求本身已经很苛刻,可不断增加的磁盘容量又给这个局面雪上加霜。长期以来,工艺的进步不断推动磁盘容量的增加,但是磁盘I/O的增加却相对缓慢,跟不上容量的急剧增加。也就是说,同样的数据容量,新的数据库通常倾向于拥有更少的磁盘,这样就更降低了数据库的效率。
以一个50GB的磁盘为例,如果存储的都是典型数据库大小的记录,那么每秒只有0.004%的容量可以被随机访问。当然,在多块磁盘上做条带化信息可以增加数据存取,但是数据库的完整性需求却又经常与并行存取相冲突。
面对数据库的高磁盘需求,固态硬盘给出了完美的解决方案。固态硬盘可以提供多种不同级别的性能。下面,我们就着重比较不同技术的硬盘——基于Flash和DRAM的固态硬盘,还有传统硬盘。我们会采用标准的评测工具来评测,到底固态硬盘有多大的性能提升。
基于DRAM的固态硬盘表现最佳
传统硬盘:
上表是一块传统磁盘的各项性能指标评测值。当数据大小为4~8KB的时候,磁盘的读写速度大概为1~2MBps。我们可以分析一下这个速度的由来——传统磁盘平均寻道时间与旋转延迟的和大概是5~10毫秒。我们也注意到当数据块大小增大的时候,读写速度有所提升,到128KB的时候,提升十分明显。不过很可惜,数据库通常的数据块大小是我们红色标注出来的4~8KB。总的来说,传统磁盘的容量最便宜,但是性能也是最差的。
基于闪存的固态硬盘(flash-based SSD):
上面是基于闪存的固态硬盘的性能评测展示。我们发现,随机读性能对比传统硬盘有很大的提升,但是随机写性能却表现糟糕。在4~8KB大小的数据块上,写的速度和I/O都仅为传统硬盘的1/10。
基于DRAM的固态硬盘:
我们看一下上面的DRAM固态硬盘性能表现,我们发现这是当之无愧的硬盘性能冠军。不论数据块是大是小,基于DRAM的硬盘性能都令人惊叹。我们在数据库日常使用中经常发现,数据库的性能之所以差强人意,很重要的原因,是被一小部分热点文件或是短暂频繁使用的硬盘区域拖了后腿。我们可以设想,如果我们将这部分I/O需求最多的数据存储到基于DRAM的固态硬盘中,我们将极大的提升整体数据库的性能。当然,基于DRAM的固态硬盘的费用也是非常昂贵,因为基于DRAM的固态硬盘内部必须持续供电,而且还得为其做备份。但是如果将少量高I/O需求的数据存储到基于DRAM的固态硬盘中,其余大部分还是存储到传统的硬盘上,还是一个非常好的选择。
三种硬盘的评测数据比较
蓝色部分数据:基于DRAM的固态硬盘
红色部分数据:基于闪存的固态硬盘
黄色部分数据:传统硬盘
随机写入性能比较
随机读性能比较 |