同传统硬盘相比,SSD有许多吸引人的特性,这也使得它们越来越具有竞争力。SSD的能耗更小,随机存取的读模式速度更快,同时具有标准的硬盘接口 标准(如SATA)。可以说SSD的出现使得传统硬盘几乎走向了命运的终点。站在DBA的角度来说,SSD高速的读取速度是其最大的优势,因为它对于解决 I/O瓶颈问题起到了至关重要的作用。
但是反过来说,SSD也并不是十全十美,特别是针对SQL Server数据库的情况,以下几个原因往往会让DBA对它望而却步。首先想到的一定是成本问题,它们所带来的数据吞吐速度提升是否能够物有所值?一个企 业管理者在处理存在多个硬盘的存储系统时,关注的不光是纯性能问题,他们更关注的是每多花一分钱性能能够提升多少的问题。如果你使用廉价的普通硬盘同时又 能解决带宽问题,得到的性能不会差到哪里去,为何还要选择SSD呢?在使用SSD时,你可能要花费10倍的资金去购买,这时你需要问自己,性能是否也能提 升10倍呢?当然,答案往往是不能的,那么我还是建议你使用普通硬盘。
在2009年由微软研究机构发布名为“服务器存储改用SSD:分析与权衡”的论文中,分析师认为在近一段时间内,对于任何的测试服务器场景,固态硬 盘都并不是最佳的选择。“只有SSD性价比提升3-3000倍之后,才有可能真正成为传统硬盘的替代品,”分析师写道:“SSD作为中间缓存层的价值十分 有限,针对各种工作负载的测试中,只有不到10%的场景证明使用SSD得到了应有的回报。”SQL Server数据库不在这10%的范围之内,同时我们对一个5000个用户的微软Exchange Server进行了SSD测试(使用了嵌入式数据库),其结果证明不适合投资固态硬盘。
另外一个针对SSD讨论比较多的问题就是它的可靠性,即能否长期反复使用:闪存单元能否禁得起反复的写操作?同样的讨论在U盘推出市场时也出现过, 但是我们现在关注的是企业级应用,同个人电子消费品不太一样,企业应用的I/O总数要远远大于个人消费者,特别是考虑到数据库这样的I/O密集型应用。数 据对于一个企业的重要性无需赘言,而稳定性是重中之重。因此没有人希望新技术的代价是将数据捆绑在定时炸弹上。
当然如果我们将现实与理论对比的话就可以发现其实SSD长期使用问题并没有那么严重,况且一个良好的设计就可以在很大程度上缓解这一问题。SSD市 场分析师Zsolt Kerekes亲自对这一问题进行了研究并得出了这样的结论:在一个设计良好的闪存SSD中,你可能需要写满整个硬盘才会出现上述所说的问题。因此即使是 数据库这样的应用,其中包含了大量的写操作,但是这对于SSD来说并不会造成使用威胁。
鉴于上述情况,写操作造成的长期使用问题其实并不会造成太多困扰,它的使用寿命之内肯定又会出现新的SSD技术,那时候更新、更快、容量更高、更节能的模型将占据市场。
当然,目前SSD市场也在不断地推陈出新,尽管价格在短时间内不会降低太多,因此如果你在现阶段想要在数据库系统中花费上万资金购买固态硬盘,那还 不如去花费同样的钱去购买其他的数据库硬件。比如增加内存减少负载中的I/O,相比之下,这样比购买固态硬盘更加划算。如果现实场景中有太多的I/O不能 够减少,那么再决定购买SSD也不迟。
来自微软公司的工程师James Hamilton发表了一系列的公式,可以帮助用户计算购买SSD是否划算,以确定更换存储设备的投资回报率。在这个公式(参考链接)中,它用到了一个数 据库服务器作为测试用例,在他的发现中,我们可以看到往返在磁盘之间的随机I/O是拖后其他I/O的主要原因,因此他决定用SSD来替换原有的存储设备。 但是还是和之前一样,投资回报率成为最大问题,利用他给出的公式我们可以看出他所使用的场景并不适合替换SSD.
虽然SSD发展的势头很快,大有替代传统硬盘的趋势,但是在企业级应用方面,特别是数据库环境(如SQL Server),其高成本造成投资回报率偏低的情况依然不容忽视。所以只有当工作负载或者SSD价格降低时,它才可能成为合格的替代品。在大把大把花钞票 的时候,先去用公式计算一下,这些钱没准儿用到其他的地方会更好。