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

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

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

  1. 大多数大型数据库都需要一个 DBA 团队来扩展。他们不断努力克服硬盘的限制,最终只能采用非常昂贵的解决方案(SAN 或大型 RAID、频繁的碎片整理和重新分区维护窗口等)。维护此类数据库的实际年度成本在 10 万至 100 万美元之间,这对我来说太高了 :)

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

因此,似乎有机会避免以传统方式扩展数据库的巨大成本,只需构建足够大的 RAID 5 SSD 驱动器阵列(仅需几千美元)。这样,我们就不必担心数据库文件是否碎片化,而且我们每秒可以承受 100 倍以上的磁盘写入,而无需将数据库分散到 100 个主轴上。

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

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


Dave、NXC 和 Burly,

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

我以前很关心 SSD 的使用寿命,但在阅读了现代磨损均衡算法后,我非常确定这些驱动器的使用寿命足够长。我的数据库每天写入 300GB,预计 2009 年每天写入量将超过 1TB。企业级 SSD 的设计目标是在数年内每天处理大约 10TB 的写入量。

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

答案1

潜在问题

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

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

拟议福利

尽管如此,至少在纸面上,仍有许多因素有利于未来采用 SSD:

  • 与 HDD 相比功耗更低
  • 产生的热量更低
  • 与 HDD 相比,每瓦性能更高
  • 更高的吞吐量
  • 更低的延迟
  • 目前大多数固态硬盘的写入耐久性都达到数百万次,因此写入耐久性不再像以前那样成为问题。请参阅一篇有点过时的文章这里

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

成本和性能

您补充说,您的成本限制在 5 万美元以下,并且您确实希望将其保持在 1 万美元以下。您还在评论中表示您可以获得一些“便宜”的 SSD,但隐瞒了 SSD 会比 DBA 或顾问更便宜。这可能是真的,具体取决于您需要 DBA 的小时数以及这是否是经常性成本。我无法为您进行成本分析。

然而,有一件事你必须非常小心种类您获得的 SSD。并非所有 SSD 都是一样的。总的来说,您看到的售价为 200-400 美元(2008/11/20)的“廉价”SSD 适用于笔记本电脑等低功耗/低热量环境。与 10K 或 15K RPM HDD 相比,这些驱动器的性能水平实际上较低 - 尤其是写入性能。具有您所说的杀手级性能的企业级驱动器 - 如 Mtron Pro 系列 - 相当昂贵。目前它们的价格约为:

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

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

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

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

概览

话虽如此,大型生产数据库的安装、配置和维护需要高技能人员。对于具有这种性能要求的公司来说,数据库中的数据和从这些数据提供的服务具有极高的价值。此外,还有很多问题无法通过硬件来解决。配置不当的 DBMS、糟糕的数据库架构或索引策略可能会破坏 DB 的性能。只需看看 Stackoverflow 在迁移到 SQL Server 2008 时遇到的问题这里这里。事实上,数据库不仅占用磁盘空间,还占用 RAM 和 CPU 空间。平衡多变量性能问题以及数据完整性、安全性、冗余和备份是件棘手的事。

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

进行一些研究的一个很好的切入点可能是 Brent Ozar 的网站/博客这里。您可能认识他的名字 - 他曾帮助 stackoverflow 团队解决 MS SQL Server 2008 性能问题。他的博客和他链接的资源提供了相当多的广度和深度。

更新

Stackoverflow 本身正在为其存储选择基于消费级 SSD 的路线。请在此处阅读相关内容:http://blog.serverfault.com/post/our-storage-decision/

参考

答案2

如果您拥有一个流量非常大的网站,并且可以通过使用 SSD 来提高写入性能,那么您可能会遇到 SSD 寿命问题,因此我目前还不推荐使用 SSD。

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

答案3

我担任数据库管理员已有 5 年多,一直在思考如何提高数据库性能。我一直在关注 SSD 领域,我认为它们肯定会成为越来越可行的选择。

看一下这个;

http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds

Acard 还生产了一款名为 ANS-9010 的新产品,它是 GC-Ramdisc 的改进版本,允许您使用 DDR2 RAM 创建 SATA 驱动器(最高 64GB),使用 DDR2 内存条,理论最大速度为 400MB/s。

http://techreport.com/articles.x/16255/3

^^ 但该文章中另一个有用的功能是,它将 ANS-9010 与 SSD 市场上的所有参与者进行了比较,结果发现英特尔拥有 64GB x25-E SSD,这与硬件内存磁盘非常相似。

关于 SSD 令我担心的是,大型数据库会对它们施加压力,从而使它们磨损严重,因此您必须使用 raid 来镜像驱动器,这意味着您要支付两倍的费用;

硬件 ramdisk 的缺点是,如果断电,电池只能维持一段时间,所以你必须想出一些奇特的方法来备份。我相信你也可以为它们购买电源插头,但这仍然依赖于你的 UPS。

我建议您使用硬件 RAM 磁盘来存储临时数据库和 Windows 交换文件 - 并将数据库放在 Intel X25-E Extreme 上(64GB 大约 600 美元)。

无论如何,它都会尖叫并让我们所有人都非常嫉妒。

(也可考虑使用另一台 ANS-9010 来托管网站)

干杯,戴夫

答案4

市场上有以下产品这个做这种事情。另外,正如其他发帖者所说,向 DB 服务器添加额外的 RAM 将提高缓存命中率,从而减少磁盘流量。

8 插槽 Opteron 服务器,例如太阳X4600可以让你在其中安装最多 256GB 的 RAM,价格仍然比大型 DBA 团队便宜。你也可以考虑使用平面文件而不是 DBMS(因为这家公司SAN 是一种数据访问策略,它比 DBMS 具有更好的性能。在这种情况下,SAN 可以保证一定程度的数据完整性。但是,您必须仔细设计数据访问策略,以免陷入混乱。显然,许多大型网络公司都这样做。它比 DBMS 效率高得多,允许相当普通的硬件处理大负载,并避免 DBMS 许可费用。

相关内容