使用廉价的 SSD 硬盘扩展数据库

Den*_*kin 25 raid hard-drive database ssd scalability

我希望你们中的许多人都在使用高流量数据库驱动的网站,并且您的主要可扩展性问题很可能在数据库中。我最近注意到一些事情:

  1. 大多数大型数据库需要一个 DBA 团队才能扩展。他们不断与硬盘驱动器的限制作斗争,最终得到非常昂贵的解决方案(SAN 或大型 RAID、用于碎片整理和重新分区的频繁维护窗口等)。维护此类数据库的实际年度成本在 10 万美元到 100 万美元之间对我来说太陡了:)

  2. 最后,我们找到了几家公司,如 Intel、Samsung、FusionIO 等,它们刚刚开始销售基于 SLC 闪存技术的速度极快且价格合理的 SSD 硬盘。这些驱动器的随机读/写速度比市场上最好的旋转硬盘快 100 倍(每秒高达 50,000 次随机写入)。它们的寻道时间几乎为零,因此随机 I/O 的成本与顺序 I/O 相同,这对数据库来说非常棒。这些 SSD 驱动器每 GB 的成本约为 10-20 美元,而且它们相对较小(64GB)。

因此,似乎有机会通过简单地构建一个足够大的 RAID 5 SSD 驱动器阵列来避免以传统方式扩展数据库的巨额成本(只需花费几千美元)。然后我们不关心数据库文件是否碎片化,我们可以承受每秒 100 倍的磁盘写入,而不必将数据库分布在 100 个轴上。.

还有人对此感兴趣吗?我一直在测试一些 SSD 驱动器,可以分享我的结果。如果本网站上有人已经用 SSD 解决了他们的 I/O 瓶颈,我很想听听你的战争故事!

附注。我知道有很多昂贵的解决方案可以帮助实现可扩展性,例如久经考验的基于 RAM 的 SAN。我想明确一点,即使 5 万美元对我的项目来说也太贵了。我必须找到一个成本不超过 1 万美元且实施时间不长的解决方案。


戴夫、NXC 和 Burly,

感谢您的回复!我想澄清一下,“便宜”这个词在我的情况下非常重要。因此,我必须使用廉价的戴尔服务器(4K 美元的 2950 年代,只有 8 个内存条)。我已经安装了 32GB 的 RAM,所以我无法继续以这种方式扩展。此外,添加 RAM 并不能使您免于磁盘写入瓶颈,这是我现在的主要问题。

我曾经关心 SSD 的使用寿命,但在阅读了现代磨损均衡算法后,我很确定这些驱动器将持续足够长的时间。我的数据库每天写入 300GB,预计在 2009 年每天会超过 1TB。企业级 SSD 旨在在多年内每天处理大约 10TB 的写入。

我不同意 Burly 的观点,即从 SAS 迁移到 SSD 需要太多的劳动。我的数据库是一个同步镜像,所以我可以升级镜像的一侧,然后观察它几个月,如果它坏了我可以故障转移到第二台服务器,它仍然有旧的好 SAS 硬盘......

Bur*_*rly 20

潜在问题

目前我对生产数据库使用 SSD 有几个问题

  • 大多数网站上的大多数数据库事务都是读取而不是写入。正如 Dave Markle 所说,您首先使用 RAM 来最大化此性能。
  • SSD 是主流和企业市场的新产品,没有一位称职的管理员会将目前需要 RAID5 中 15K RPM U320 磁盘的生产数据库迁移到一项未经证实的技术。
  • 研究和测试迁移到这项新技术、在他们的环境中对其进行审查、更新操作程序等的成本,无论是在时间还是金钱方面,都是比大多数商店不得不节省的更大的前期成本。

拟议的好处

也就是说,未来有许多项目(至少在纸面上)有利于 SSD:

  • 与 HDD 相比功耗更低
  • 低得多的热量产生
  • 与 HDD 相比,每瓦性能更高
  • 更高的吞吐量
  • 低得多的延迟
  • 大多数当前一代 SSD 具有数百万个周期的写入耐久性,因此写入耐久性不再是以前的问题。在这里看到一篇有点过时的文章

因此,对于给定的性能基准,当您考虑包括直接电源和间接冷却成本在内的总拥有成本时,SSD 可能会变得非常有吸引力。此外,根据您环境的具体情况,减少给定性能水平所需的设备数量也可能导致人员配备需求减少,从而降低劳动力成本。

成本和性能

您补充说,您的成本限制低于 5 万美元,并且您确实希望将其保持在 1 万美元以下。您还在评论中表示您可以获得一些“便宜”的 SSD,但并未说明 SSD 会比 DBA 或顾问便宜。这可能是正确的,具体取决于您需要 DBA 的小时数以及它是否是重复发生的成本。我无法为您做成本分析。

但是,您必须非常小心的一件事是您获得的 SSD类型。并非所有 SSD 都是一样的。总的来说,您看到的售价 200-400 美元(2008 年 11 月 20 日)的“廉价”固态硬盘适用于笔记本电脑等低功耗/热环境。与 10K 或 15K RPM HDD 相比,这些驱动器实际上具有较低的性能水平 - 特别是对于写入。具有您所说的杀手级性能的企业级驱动器 - 如 Mtron Pro 系列 - 非常昂贵。目前他们在:

  • 16GB 400 美元
  • 32GB 900 美元
  • 64GB 1400 美元
  • 128GB 3200 美元

根据您的空间、性能和冗余要求,您很容易就会超出预算。

例如,如果您的要求需要总共 128GB 的​​可用存储空间,那么 RAID 0+1/10 或带有 1 个热备件的 RAID 5 约为 5600 美元

但是,如果您需要 TB 的可用存储空间,那么 RAID 0+1/10 的成本约为 51,000 美元,带 2 个热备件的 RAID 5 的成本约为 32,000 美元。

大图

也就是说,大型生产数据库的安装、配置和维护需要高度熟练的人员。DB 中的数据以及从该数据提供的服务对于具有这种性能要求的公司来说具有极高的价值。此外,有很多事情是无法通过硬件解决问题来解决的。配置不当的 DBMS、糟糕的数据库架构或索引策略可能会/破坏/数据库的性能。只需在此处此处查看Stackoverflow 在迁移到 SQL Server 2008 时遇到的问题. 事实是,数据库不仅在磁盘上而且在 RAM 和 CPU 上都是一项繁重的应用程序。平衡多变量性能问题以及数据完整性、安全性、冗余和备份是一个棘手的问题。

总之,虽然我确实认为对硬件和软件技术的任何和所有改进都受到社区的欢迎,但大规模数据库管理(如软件开发)是一个难题,将继续需要熟练的工人。给定的改进可能无法获得您或公司可能希望的劳动力减少成本。

对于一些研究的好跳跃点可能是布伦特奥扎尔的网站/博客在这里。您可能认识他的名字 - 他是帮助 stackoverflow 团队解决 MS SQL Server 2008 性能问题的人。他链接的博客和资源提供了相当多的广度和深度。

更新

Stackoverflow 本身正在为他们的存储采用基于消费者 SSD 的路线。在这里阅读:http : //blog.serverfault.com/post/our-storage-decision/

参考


Dav*_*kle 4

如果您有一个非常非常高流量的站点,可以从 SSD 中受益以提高写入性能,那么您可能会遇到 SSD 使用寿命的问题,因此我还没有为此出售它们。

考虑到这一点,如何处理具有高读取级别的数据库呢?答案很简单:用你能承受的尽可能多的内存来塞满服务器。您会发现最热的表几乎总是保存在 RAM 缓存中,并且任何对磁盘的大量命中都可能是由于大表或索引扫描造成的,这通常可以通过适当的索引进行优化。