SSD 上的 MySQL - 有什么缺点?

Bal*_*ald 4 mysql performance ssd

最近,我听说我不应该在 SSD 驱动器上托管我的 MySQL 数据库,因为磁盘故障和数据丢失的可能性很大。

鉴于我的数据库中 20% 的查询是 INSERT 和 UPDATE,这里是我的问题:

问题

  • 在 SSD 上使用 MySQL 有什么缺点?
  • 哪些解决方案或替代方案可用于 MySQL/SSD 使用?

Dav*_*ett 5

如果您购买像样的驱动器,现代 SSD 比人们在这些讨论中通常认为的要可靠得多。如果驱动器故障是一个问题,那么 RAID 驱动器就像使用基于旋转金属的驱动器一样。

SSD 的一个问题是写入寿命,但对于除病态情况以外的所有情况,如果您有良好的驱动器,其可靠性不应该比传统驱动器差多少(如果有的话)。另一个问题是随机写入性能,这可能是某些驱动器在重写负载下的问题(这在具有较大“过度分配”因素的驱动器上有所缓解,并且您不会发现它比旋转金属管理更慢)。除非您有大量写入负载,否则这些问题都不会很重要。

“20% 的操作是插入或更新”并不是特别有意义,因为它们可能会影响一行或数百万行。从性能 PoV 来看,最好的做法是测试您的应用并为其运行实际的基准测试。从具有良好驱动器的可靠性 PoV 来看,您应该像使用旋转金属一样安全,尽管当然可以像往常一样使用 RAID1(或 10)和备份来覆盖所有基础。

任何比这更具体的建议都将是非常意见而不是基于事实的。对于我自己的 PoV:现在我将 SSD放在任何我能负担得起更大 $/Gb 的地方,并能处理较小的单个设备尺寸,但我不信任单个 SSD,而不是单个旋转金属驱动器,所以任何重要的东西获得 RAID 和(更重要的是)定期备份,定期测试这些备份(经常被跳过的步骤)。

  • “如果驱动器故障是一个问题,那么 RAID 驱动器就像使用基于旋转金属的驱动器一样。” 驱动器故障从来都不是问题吗? (4认同)

Rol*_*DBA 5

您需要记住,SSD 设备的使用寿命取决于写入次数。您可能需要实施一种混合方法,以适应 HDD 上频繁写入的文件和 SSD 中的其他组件,从而减少大量顺序写入的需要。我第一次了解到这个布局是从一位FaceBook工程师的博客上

我不想对此进行长时间的讨论,而是想推荐三篇旧文章,其中我讨论了 MySQL(InnoDB) 和 PostgreSQL:

您应该考虑这一点,因为顺序读取和随机读取在 SSD 上具有相同的性能(恕我直言)