所有 SSD 还需要一个擦除周期才能覆盖一个块。(删除文件时不会擦除块,因为文件删除是 FS 操作,而块设备看不到它)。对于控制器较差的驱动器,这可能会在大量写入期间造成巨大的性能损失,因为此操作可能需要一段时间,并且在某些情况下会阻止访问。我相信英特尔驱动器利用他们的备用闪存来加速这一点 - 他们使用备用闪存提供一个干净的块来写入,然后擦除脏块并将其移动到后台的备用池中。新的驱动器中正在实施一个新的 ATA TRIM 命令,并在 linux 和 windows 7 中提供支持,这将允许操作系统触发所有脏块的背景擦除,这将提高性能。
SSD 的长期“性能下降”通常是指上面提到的擦除/写入周期,因此体面的驱动器和 TRIM 命令应该基本上消除了这个问题。
这是一篇很棒的博客文章,其中包含我曾经合作过的微软架构师 James Hamilton 的大量研究和数据链接。
SSD 与企业 SATA 和 SAS 磁盘
我在周二的 .NET Rocks 录音中与 Richard 和 Carl 简要讨论了这个问题。如果您遇到随机读取工作负载的 IO 瓶颈,那么使用 SSD 应该会给您带来很大的提升,因为它可以降低延迟和寻道时间。
希望这可以帮助
[编辑:PS,当然我的数据/观点是围绕 SQL Server,但 IO 子系统是一个 IO 子系统,结果应该在任何主要的 RDBMS 中转换得相当好)]
澄清一些已经提到的观点:
MLC 驱动器每个单元存储更多数据,这会略微增加写入延迟。它们的 SLC 驱动器的预期写入周期数也显着降低(通常为 1/10)。对于任何与企业相关的事情,我都会远离 MLC 驱动器。
关于驱动器的整体寿命,所有 SSD 都使用磨损均衡算法来平衡热写入区域。一些驱动器保留备用闪存区域供内部使用(英特尔 X25-E 执行此操作,而 FusionIO 驱动器让您在对驱动器进行分区时确定保留区域),这扩展了写入容量 - 如果您有 80 GB 的闪存磨损级别 60 GB 的分区,您的驱动器持续时间更长。
所有 SSD 还需要一个擦除周期才能覆盖一个块。(删除文件时不会擦除块,因为文件删除是 FS 操作,而块设备看不到它)。对于控制器较差的驱动器,这可能会在大量写入期间造成巨大的性能损失,因为此操作可能需要一段时间,并且在某些情况下会阻止访问。我相信英特尔驱动器利用他们的备用闪存来加速这一点 - 他们使用备用闪存提供一个干净的块来写入,然后擦除脏块并将其移动到后台的备用池中。新的驱动器中正在实施一个新的 ATA TRIM 命令,并在 linux 和 windows 7 中提供支持,这将允许操作系统触发所有脏块的背景擦除,这将提高性能。
SSD 的长期“性能下降”通常是指上面提到的擦除/写入周期,因此体面的驱动器和 TRIM 命令应该基本上消除了这个问题。
如果您要为企业系统购买 SSD,请进行研究,然后只购买优质的企业级 SLC 驱动器。Intel X25-E(不是-M,这些是台式机驱动器)和 Fusion-IO 驱动器是我现阶段唯一推荐的驱动器。
我们使用 Fusion IO 卡进行了一些 Oracle 基准测试。它非常快。
将我们 35 分钟的流程之一缩短到 11 分钟。
它本身不是 SSD 驱动器,而是带有 NAND 内存的 PCI 卡。
SLC型据说比MLC型好。
不幸的是,仅支持 64 位操作系统,因此必须迁移 32 位或等待 32 位驱动程序(来自 Fusion IO)。