使用固态硬盘加速数据库 I/O

使用固态硬盘加速数据库 I/O

使用 HP 等固态硬盘(特别是针对 PostgreSQL 数据库)提高数据库性能的经验是什么?IO加速器? 您看到有什么明显的改善吗?

答案1

这是一篇很棒的博客文章,其中包含大量研究和数据链接,作者是曾经与我共事的微软架构师詹姆斯·汉密尔顿 (James Hamilton)。

SSD 与企业 SATA 和 SAS 磁盘

我在周二的 .NET Rocks 录音中与 Richard 和 Carl 简要讨论了这个问题。如果您在随机读取工作负载方面存在 IO 瓶颈,那么使用 SSD 应该会给您带来很大的提升,因为它可以缩短延迟和寻道时间。

希望这可以帮助

[编辑:PS,当然我的数据/观点都是围绕 SQL Server 的,但 IO 子系统就是 IO 子系统,结果应该可以在任何主要的 RDBMS 上很好地转换。]

答案2

澄清一些已经提到的观点:

MLC 驱动器每个单元存储的数据更多,这会稍微增加写入延迟。它们的预期写入周期数也明显低于 SLC 驱动器(通常为 SLC 驱动器的十分之一)。对于任何与企业相关的产品,我都会远离 MLC 驱动器。

关于驱动器的整体使用寿命,所有 SSD 都使用磨损均衡算法来平衡热写入区域。一些驱动器保留备用闪存区域供内部使用(Intel X25-E 就是这样做的,而 FusionIO 驱动器让您在对驱动器进行分区时确定保留区域),这可以扩展写入容量 - 如果您有 80 GB 的闪存来对 60 GB 的分区进行磨损均衡,那么您的驱动器的使用寿命就会更长。

所有 SSD 还需要一个擦除周期,然后才能覆盖块。(删除文件时不会擦除块,因为删除文件是 FS 操作,块设备看不到它)。对于控制器较差的驱动器,这可能会在写入繁重期间导致性能大幅下降,因为此操作可能需要一段时间,并且在某些情况下会阻止访问。我相信,英特尔驱动器会利用其备用闪存来加速这一过程 - 它们使用备用闪存来提供干净的块进行写入,然后擦除脏块并在后台将其移至备用池中。较新的驱动器正在实施新的 ATA TRIM 命令,Linux 和 Windows 7 即将提供支持,这将允许操作系统触发所有脏块的后台擦除,从而提高性能。

SSD 的长期“性能下降”通常与上面提到的擦除/写入周期有关,因此良好的驱动器和 TRIM 命令应该可以从根本上消除这个问题。

如果您要为企业系统购买 SSD,请进行研究并只购买质量良好的企业级 SLC 驱动器。英特尔 X25-E(不是 -M,这些是台式机驱动器)和 Fusion-IO 驱动器是我目前唯一推荐的驱动器。

答案3

我们用 Fusion IO 卡进行了一些 Oracle 基准测试。速度非常快。

将我们原本 35 分钟的流程缩短到 11 分钟。

它本质上并不是一个 SSD 驱动器,而是一个带有 NAND 内存的 PCI 卡。

据称,SLC 类型比 MLC 类型更好。

不幸的是,仅支持 64 位操作系统,因此必须迁移 32 位或等待 32 位驱动程序(来自 Fusion IO)。

相关内容