使用便宜的SSD硬盘扩展数据库


25

我希望你们中的许多人正在使用高流量数据库驱动的网站,并且有机会将主要的可伸缩性问题放在数据库中。我最近注意到了几件事:

  1. 大多数大型数据库都需要一组DBA来进行扩展。他们不断地因硬盘驱动器的限制而苦苦挣扎,最终获得了非常昂贵的解决方案(SAN或大型RAID,频繁的碎片整理和重新分区维护窗口等)。维护此类数据库的实际年度成本在10万美元至100万美元之间,对我来说太陡了:)

  2. 最终,我们吸引了多家公司,如英特尔,三星,FusionIO等,它们才开始销售基于SLC闪存技术的超快速但价格合理的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万美元,对于我的项目来说也太昂贵了。我必须找到一种解决方案,其成本不超过$ 10,000,并且不需要花费很多时间来实施。


Dave,NXC和Burly,

多谢您的回覆!我想澄清一下,“便宜”一词在我的情况下非常重要。因此,我必须使用便宜的戴尔服务器($ 4K 2950s,只有8个存储库)。我已经安装了32GB的RAM,因此无法继续以这种方式扩展。此外,添加RAM不会使您摆脱磁盘写入瓶颈,这是我目前的主要问题。

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

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


2
顺便说一句,尽管您确实指出改进的性能将如何潜在地降低硬件成本,但您并没有明确说明SSD如何降低您的主要成本-人工。我猜想可能是在一个事实,即在安装尺寸的减少可能会降低你的工作人员请求数越来越
魁梧

2
我的数据库在没有任何专职DBA或顾问的情况下愉快地运行了3年。然后,负载增加到我们陷入I / O僵局的地步。因此,我可能不得不向DBA支付很多钱才能对数据库进行分区和碎片整理。或者只是买一些便宜的固态硬盘。
丹尼斯·卡什金,

我更新了答案,以讨论您添加的成本约束。根据数据库的空间,大小,性能,维护和修改要求,SSD当然可以提供经济高效的解决方案。解决方案设计和成本分析超出了我们的范围。祝你好运!
Burly

您喝得太多了,SSD最多只能比RAID驱动器快1.5倍,但写入速度却比磁盘慢。具有高速RAID的基于光纤的SANS会破坏任何SSD,无论其性能如何。
TravisO

只是想共享-我们已经在SSD上运行了400GB的数据库已有5个月了。该数据库有很多写入活动(每秒最多1200个事务)。到目前为止,我们没有任何问题,与具有15K rpm SAS驱动器的RAID10相比,性能有了显着提高。磁盘保持96%空闲。因此,考虑到SSD现在变得非常便宜(160GB Intel驱动器为600美元),我断言这是扩展SAN的更好方法。
丹尼斯·卡什金

Answers:


20

潜在问题

我目前在将SSD用于生产数据库时遇到了几个问题

  • 大多数网站上的大多数数据库事务都是读而不是写。正如Dave Markle所说的那样,您首先要使用RAM来最大化性能。
  • SSD对主流市场和企业市场来说是新的,没有管理员值得一提的是,该生产数据库目前需要RAID5中的15K RPM U320磁盘通过光纤通道进行通信,这种技术尚未得到验证。
  • 过渡到这项新技术,在其环境中对其进行审查,更新操作程序等方面的研究和测试成本,无论是在时间还是金钱上,都是比大多数商店所能节省的更大的前期成本。

拟议福利

也就是说,将来有很多项目,至少在纸上支持SSD:

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

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

成本与绩效

您已经添加了一个成本限制,在$ 50K美元以下,并且您确实希望将其保持在$ 10,000以下。您还曾在评论中说过,您可以获得一些“便宜”的SSD,而这些SSD将比DBA或顾问便宜。这可能是正确的,具体取决于您需要DBA的小时数以及它是否是重复发生的成本。我无法为您做成本分析。

然而,有一件事你必须非常小心的是那种 SSD的你。并非所有SSD都是一样的。总的来说,您看到的“便宜” SSD以200-400美元(2008/11/20)的价格出售,专门用于笔记本电脑等低功率/热环境。与10K或15K RPM HDD相比,这些驱动器实际上具有较低的性能水平-特别是对于写入。具有您所说的杀手级性能的企业级驱动器(例如Mtron Pro系列)非常昂贵。目前他们周围:

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

根据您的空间,性能和冗余要求,您可以轻松地节省预算。

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

但是,如果您需要TB的可用存储空间,则RAID 0 + 1/10约为$ 51,000,带有5个热备份的RAID 5约为$ 32K。

大图景

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

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

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

更新资料

Stackoverflow本身正在采用基于消费者SSD的存储路径。在此处阅读有关内容:http : //blog.serverfault.com/post/our-storage-decision/

参考文献


极好的答案。
NotMe

您在此上花费了太多时间:P
TravisO'

很棒的解释。为每个人砍木头。不错的工作!
BerggreenDK

4

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

考虑到这一点,如何处理具有较高读取级别的数据库?答案很简单:用尽可能多的RAM阻塞服务器。您会发现,最热的表几乎总是被保留在RAM缓存中,对磁盘的任何重大打击都可能归因于大表或索引扫描,通常可以通过适当的索引来优化它们。


我会再次评论您对SSD使用寿命的关注。就MTBF而言,SSD的额定值比HDD高得多。就写周期的持久性而言(以前是个问题),当前的写周期已超过100万,这成为了非问题,尤其是在RAID配置中。
魁梧

(字符不足)...不是您不必担心SSD的寿命,只是当前的技术等级表明SSD等于或优于HDD。SSD没有数十年的生产经验,这意味着未经验证。
魁梧

SSD的写入速度比
HD的

通常,SSD在随机写入(尤其是4K随机写入)时要快得多。对于顺序写入,它们可能较慢,但这对于数据库服务器而言不一定重要。
ChrisInEdmonton

1

我担任DBA已有5年以上,而思考如何提高DB性能始终是我的工作。我一直在关注SSD空间,并且我认为它们无疑正在变得越来越可行。

看一下这个;

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

Acard还生产了一种名为ANS-9010的新产品,它是GC-Ramdisc的改进版本,可让您使用DDR2内存以理论上为400MB / s的DDR2记忆棒创建SATA驱动器(最大64gig)。最大。

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

^^但该文章中有用的另一件事是,它将ANS-9010与SSD市场上的所有播放器进行了比较,结果证明,英特尔拥有64GB x25-E SSD,几乎与拥有硬件ramdisk相当。

让我担心SSD的是,它们承受着大型数据库所承受的所有压力,因此您必须使用RAID来镜像驱动器,这意味着您要付出两倍的代价;

而且,硬件ramdisk的缺点是,在断电的情况下,电池只能供电很长时间,因此您必须找到一些花哨的方法来备份它。我相信您也可以为其购买电源插头,但是那仍然取决于您的UPS。

我建议您将硬件ram磁盘用于临时DB和Windows交换文件-并将数据库放在Intel X25-E Extreme上(64 gig大约600美元)。

无论如何,它都会尖叫,并使我们所有人都感到嫉妒。

(也可以考虑使用其他ANS-9010托管网站)

干杯,戴夫


1

我们只是在双2.5英寸Seagate Momentus XT混合镜像上放了一个w2k3 r2 64位Sql 2008服务器-OS 1/4冲程,DB 1/4冲程。因此,对于OS使用125GB,对于DB使用125GB。序列读取速度从1500MB / s提高到1900MB / s。在Intel i7 2600K 3.4Ghz 8GB上


0

市场上有诸如This这样的产品。另外,正如其他发帖人所述,向数据库服务器添加额外的RAM将为您提供更好的缓存命中率,这将减少磁盘流量。

诸如Sun X4600之类的8插槽Opteron服务器将允许您在其中容纳多达256GB的RAM,其价格仍比大型DBA团队便宜。您还可以考虑使用平面文件而不是DBMS(就像该公司那样),这将为您提供比DBMS更好的性能。在这种情况下,SAN将为您提供一定程度的数据完整性。但是,您将必须精心设计数据访问策略,以免陷入混乱。显然,许多大型互联网公司都这样做。它比DBMS效率要高得多,它允许相当步行的硬件处理大负载,并且避免了DBMS许可费用。


-1

SSD驱动器基于NAND闪存(MLC或SLC)。如果您购买的是SATA(2或3)尺寸的SSD驱动器,则将限制您获得的性能。通常,基于快速Sandforce SF-1200控制器的SSD驱动器可产生220MB /秒的读取速度和205MB /秒的写入速度,这比老式的机械旋转磁盘要快得多。

但是,如果您转而使用不包含慢速SATA 2或SATA 3连接器的PCIe解决方案(例如FusioIO),则您所寻找的解决方案要比旋转机械公牛(我的意思是磁盘)快10到50倍。

因此,对于您的“便宜”解决方案,请使用基于Sandforce SF-1200控制器的SATA 2/3 SDD。根据实际经验,这将使您的速度提高约3-5倍。如果您有预算,请选择FusioIO。在性能方面,没有什么比它更胜一筹了。速度很快。预计花费$ 20,000至$ 50,000。


2
谬论。现代SSD可以提供约50,000 IOPS的性能,吞吐量达580mb.SAS的IOPS不到500。数据库不是文件服务器。
TomTom
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.