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

我希望你们中的许多人正在处理高stream量的数据库驱动的网站,而且你的主要可伸缩性问题可能在数据库中。 最近我注意到了一些事情:

  1. 大多数大型数据库都需要一组DBA才能进行扩展。 他们经常与硬盘驱动器的局限性作斗争,并最终采用非常昂贵的解决scheme(SAN或大型RAID,经常维护的磁盘碎片整理和重新分区等)。维护此类数据库的实际年度成本在$ 100K到$ 1M之间太陡了:)

  2. 最后,我们有几家公司,如英特尔,三星,FusionIO等,刚刚开始销售基于SLC闪存技术的极速而又经济实惠的SSD硬盘。 这些驱动器的随机读取/写入速度比市场上最好的旋转硬盘驱动器快100倍(每秒高达5万个随机写入)。 他们的查找时间几乎为零,因此随机I / O的成本与顺序I / O相同,这对于数据库来说非常棒。 这些固态硬盘的成本大约是每GB 10-20美元,而且相对较小(64GB)。

因此,似乎有机会通过简单地构build足够大的RAID 5arraysSSD驱动器(这将花费数千美元)来避免以传统方式扩展数据库的巨大成本。 然后,我们不关心数据库文件是否被分割,我们可以承受每秒100次的磁盘写入,而不必将数据库分散到100个主轴上。 。

其他人对此感兴趣吗? 我一直在testing一些SSD驱动器,可以分享我的结果。 如果这个网站上的任何人已经用SSD解决了他们的I / O瓶颈,我很乐意听到你的战争故事!

PS。 我知道有很多昂贵的解决scheme可以帮助实现可扩展性,例如经过时间考验的基于RAM的SAN。 我想要清楚的是,即使是5万美元对于我的项目来说也太昂贵了。 我必须find一个解决scheme,花费不超过1万美元,并且不需要太多时间来执行。


Dave,NXC和Burly,

感谢您的回复! 我想澄清的是,“便宜”这个词对我来说非常重要。 所以,我必须使用便宜的戴尔服务器($ 4K 2950s只有8个内存银行)。 我已经安装了32GB的内存,所以我无法继续扩展。 此外,添加内存并不能让你免受磁盘写入瓶颈,这是我现在的主要问题。

我曾经关心固态硬盘的寿命,但在阅读了现代耗损均衡algorithm之后,我确信这些硬盘将持续足够长的时间。 我的数据库每天写入300GB,预计在2009年每天超过1TB。企业级SSD旨在处理多年来每天大约10TB的写入。

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

    潜在的问题

    目前我使用固态盘作为生产数据库的问题有两点

    • 大多数网站上的大部分数据库事务都是读取而不是写入。 正如戴夫·马克尔(Dave Markle)所说,你首先要用RAM最大化这个性能
    • 固态硬盘是主stream和企业级市场的新宠,没有任何值得他的盐的pipe理员将移动一个生产数据库,目前需要RAID5中的15K RPM U320磁盘通过光纤通道与未经证实的技术进行通信。
    • 考虑到这项新技术的研究和testing成本,在环境中进行审查,更新操作程序等等,与时间和金钱相比,前期成本要比大多数商店要多。

    build议的好处

    也就是说,至less在纸面上有很多项目支持未来的SSD:

    • 与HDD相比,功耗更低
    • 发热量低得多
    • 与HDD相比,每瓦性能更高
    • 吞吐量要高得多
    • 低得多的延迟
    • 大多数新一代固态硬盘具有数百万次的写入耐用性,所以写入耐久性不再像过去那样成为问题。 在这里看到有点过时的文章

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

    成本和性能

    你已经补充说你的成本约束在$ 5万美元以下,你真的想把它保持在$ 10K以下。 你也在评论中表示,你可以买到一些“便宜”的固态硬盘,不过SSD会比DBA或顾问便宜。 这可能是真实的,具体取决于您需要DBA的小时数,以及是否是重复使用成本。 我无法为你做成本分析。

    但是,你必须非常小心的一件事是你得到的那种 SSD。 并非所有的SSD都是相同的。 总的来说,价格在200-400美元(2008/11/20)的“廉价”固态硬盘适用于像笔记本电脑这样的低功耗/高温环境。 与10K或15K RPM HDD相比,这些驱动器实际上具有较低的性能水平 – 尤其是对于写入。 具有杀手级性能的企业级驱动器(如Mtron Pro系列)相当昂贵。 目前他们在附近:

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

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

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

    但是,如果你需要一个可用的存储空间,那么RAID 0 + 1/10将会是〜51K,而带有2个热点的RAID 5将会是〜32K。

    大图片

    也就是说,大型生产数据库的安装,configuration和维护需要高度熟练的人员。 数据库中的数据和从这些数据中提供的服务对于具有这种性能要求的公司而言具有极高的价值。 另外,还有很多东西是不能通过硬件来解决问题的。 configuration不当的数据库pipe理系统,糟糕的数据库模式或索引策略可能会导致数据库性能下降。 看看Stackoverflow在迁移到SQL Server 2008时在这里和这里遇到的问题。 事实是,数据库不仅在磁盘上,而且在内存和CPU上都是一个艰巨的应用。 平衡多variables性能问题以及数据完整性,安全性,冗余和备份是一个棘手的问题。

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

    对于一些研究来说,一个好的跳跃点可能是Brent Ozar的网站/博客。 你可能会认出他的名字 – 他是帮助了他们的MS SQL Server 2008性能问题的stackoverflow船员。 他的博客和资源他提供了相当多的广度和深度。

    更新

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

    参考

    如果你有一个真正的高stream量的网站,可以从固态硬盘获得更高的写入性能,你可能会在SSD的生命周期中遇到问题,所以我还没有卖给他们。

    考虑到这一点,如何处理读取水平高的数据库? 答案很简单:使用尽可能多的RAM来阻塞服务器。 你会发现最热的表几乎总是保存在RAMcaching中,任何对磁盘的巨大打击都可能是由于大表或者索引扫描造成的,这通常可以通过适当的索引来优化。

    我作为一名DBA工作了5年以上,想方设法提高数据库性能总是在我的后面。 我一直在关注SSD的空间,我认为他们肯定会越来越成为一个可行的select。

    看一下这个;

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

    另外还有一款由Acard生产的新产品,称为ANS-9010,它是GC-Ramdisc的改进版本,它允许您使用DDR2内存条,使用DDR2内存条,使用DDR2内存条,创buildSATA驱动器(最高64gig),理论速度为400MB / s最大值。

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

    ^^但是在这篇文章中另一个有用的东西是,它将ANS-9010与SSD市场上的所有玩家进行了比较,结果发现Intel有64GB x25-E SSD,与硬件ramdisk相当。

    那些让我担心SSD的东西会让他们感觉到大型数据库会给他们带来的压力,所以你不得不用RAID来镜像硬盘,这意味着你要付出两倍的代价。

    而硬件ramdisk的缺点是,电池,在断电的情况下,只有权力的这么长时间,所以你必须制定一些奇特的方式来支持它。 我相信你也可以为他们购买一个电源插头,但是这依然依赖于你的UPS。

    我build议你使用临时数据库和Windows交换文件的硬件RAM磁盘 – 并将数据库放在英特尔X25-E Extreme(大约600美元,用于64位演出)。

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

    (另外考虑使用另一个ANS-9010来托pipe网站)

    干杯,戴夫

    我们只需要在双2.5in Seagate Momentus XT混合镜面上安装一台w2k3 r2 64bit Sql 2008服务器 – 对于OS来说是四分之一行程,对于DB来说是四分之一行程。 所以使用125GB的操作系统和125GB的数据库。 正在获得1500MB / s到1900MB /秒的seq读取。 在英特尔i7 2600K 3.4Ghz 8GB

    市场上有这样的产品。 另外,另一张海报说,向数据库服务器添加额外的内存将为您提供更好的caching命中率,这将减less磁盘stream量。

    像Sun X4600这样的8路Opteron服务器可以让你的内存容量达到256GB,价格比大型DBA团队还便宜。 你也可以考虑使用平面文件而不是DBMS(就像这家公司所做的那样),这会给你比DBMS更好的性能。 在这种情况下,SAN将为您提供一定程度的数据完整性。 但是,您必须仔细devise数据访问策略,以避免陷入混乱。 显然有不less这样的大型networking公司服装。 它比数据库pipe理系统(DBMS)效率更高,可以让公平的行人硬件处理大量负载,并避免DBMS许可费用。

    SSD驱动器基于NAND闪存(MLC或SLC)。 如果您购买SATA(2或3)外形的SSD驱动器,则会限制您获得的性能。 通常,基于SandForce SF-1200控制器的SSD硬盘的读取速度为220MB /秒,写入速度为205MB /秒,比老式机械旋转磁盘快得多。

    但是,如果您转向PCIe解决scheme(如FusioIO,没有涉及速度较慢的SATA 2或SATA 3连接器),则您正在寻找比旋转机械公牛(我的意思是磁盘)快10到50倍的解决scheme。

    因此,对于您的“便宜”解决scheme,请使用基于Sandforce SF-1200控制器的SATA 2/3 SDD。 这会使你的速度提高3-5倍(根据现实世界的经验)。 如果你有预算,那么去FusioIO。 没有什么会在performance方面击败它。 它非常快速。 虽然预计花费2万美元至5万美元。