有没有人在固态硬盘上运行SQL Server? 你有没有find任何具体的优化技巧? 我特别感兴趣的是如何降低SQL Server执行小型随机写入操作的频率,因为它们是SSD性能的克星,特别是MLC SSD驱动器。
当然,有一些明显的优化可以做到:读数量大的数据应该由SSD提供,写入重量的数据应该留给传统的旋转磁盘。 这当然包括交易日志!
给定足够的预算,当然,人们会希望使用像X25-E或Vertex Ex系列或各种企业级产品的SLC SSD磁盘。 但是我也对那些可能有益于MLC SSD设置的提示感兴趣。 我认为这是一个有趣的领域。 我的一个客户的客户有一个小的预算和一个非常大的数据集,他们正在面对一个完整的重写近百个查询,以保持体面的performance水平。 然而,我有一个偷偷摸摸的猜测,不到500美元的内存和固态硬盘空间可能会使他们获得比成千上万(可能是几万美元)的开发者时间更大的性能收益。
不知道你的意思是减lessSQL Server所做的随机小写操作。 SQL Server只在检查点写出数据页面 – 所以限制写入次数的唯一方法是更改检查点间隔或不要那么多的IUD操作。 你的意思是别的吗?
在我看到的所有固态硬盘的实现中(less数),这与您所build议的相反 – 固态硬盘的最佳使用似乎适用于写入繁重的事务日志和临时数据库(tempdb) – 基本上哪里最大/ O子系统瓶颈,并将SSD固定在那里 – 因为查找时间和延迟降低到一个较低的常数。
检出这篇MS生成的研究论文(不幸的是,在SQL Server细节上不太详细):将服务器存储迁移到SSD:权衡分析 。
希望这可以帮助!
您无法修改SQL Server IO特征。 它的基本磁盘访问单元(数据文件)是一个8Kb的页面。 它将主要在检查点写入它们,但也可以懒惰地写入它们。
SQL在返回之前不等待写入数据磁盘完成,只有日志写入必须完成。 如果你只能保留一个数据库日志在一个磁盘上,那么这将是顺序写入,并将正常快速硬盘上罚款。
从SQL的angular度来看,性能打击的是何时读取磁盘。 如果你可以给它更多的内存,那么SQL将在内存中保存更多的数据页面,这比任何types的磁盘,SSD或其他。 显然你也可以通过创build适当的索引来减less磁盘读取次数。 我预计固态硬盘也将有助于这些读取,因为它们可能是随机的,等待驱动器头移动。
我不知道我们在这里讨论的数据库大小,但是你可能想看一下HyperOS。 他们制作的SATA硬盘实际上只是一个DDR2内存条的加载,而SSD或2.5英寸硬盘作为备份。 那么服务器的访问模式就不重要了。 我不会把日志放在这样的东西上。 日志是什么保持你的数据一致,他们需要去一个可靠的媒体,尽pipe它备份固态硬盘和电池,服务器可能有一个UPS等,我仍然觉得不容易关于没有我的日志在一个真正的硬盘在某种容错RAIDarrays中。
由于磁头搜寻延迟,小型随机操作是传统磁盘的克星。固态硬盘在解决这个问题上非常出色。
通过长时间的连续操作,标准磁盘的性能非常好,所以使用SSD(当然,从性能的angular度来看)没有任何意义。
这里还没有注明要添加到注释线程中,但是如果您将SSD的页面大小/多个读取计数设置为SSD的页面大小的倍数,则这不应该成为问题。
我很长时间没有在SQL Server上工作,所以我不确定这些选项是否可用。 过去几年我一直在做Oracle和DB2,这将解决您的担忧,因为数据库将适当地调整为磁盘特性。
我会build议alignment数据库文件存储的分区。
我还build议你决定在perf(ldf和TempDB)上使用RAID 0,并把关键数据放在RAID 1(mdf)上。
第三,你真的应该更新驱动器的固件以及SATA控制器固件/驱动程序。 通过这样做,您可以让硬件公司及其开发人员为您优化性能。