SQL Server 2K/2K5/2K8 和固态磁盘:具体优化?

SQL Server 2K/2K5/2K8 和固态磁盘:具体优化?

这里有人在固态硬盘上运行 SQL Server 吗?你找到任何具体的优化技巧了吗?我特别感兴趣的是减少 SQL Server 执行小型随机写入操作的频率的方法,因为它们是 SSD 性能的克星,尤其是 MLC SSD 驱动器。

当然,可以进行一些明显的优化:读取量大的数据应由 SSD 提供,写入量大的数据应留给传统的旋转磁盘。当然,这包括事务日志!

当然,如果预算足够,人们会希望使用 SLC SSD 磁盘,如 X25-E 或 Vertex Ex 系列或各种企业级产品。但我也对可能有益于 MLC SSD 设置的技巧感兴趣。我认为这是一个有趣的领域。我的一位客户的客户预算很少,数据集增长迅速,他们面临着近百个查询的完全重写,以保持良好的性能水平。然而,我暗自怀疑,不到 500 美元的 RAM 和 SSD 空间可能会为他们带来比数千(可能数万)美元的开发人员时间更大的性能提升。

答案1

不确定您所说的减少 SQL Server 执行的小规模随机写入量是什么意思。SQL Server 仅在检查点期间写出数据页 - 因此限制写入次数的唯一方法是更改​​检查点间隔或不要执行那么多 IUD 操作。您还有其他意思吗?

在我见过的所有 SSD 实现中(少数),它都与你所建议的相反 - SSD 的最佳用途似乎是用于写入密集型事务日志和 tempdb - 基本上是最大的 I/O 子系统瓶颈并将 SSD 放在那里 - 因为寻道时间和延迟减少到一个较低的常数。

查看 MS 制作的这篇研究论文(不幸的是,它没有对 SQL Server 的具体细节进行详细描述):将服务器存储迁移至 SSD:权衡分析

希望这可以帮助!

答案2

您无法修改 SQL Server 的 IO 特性。对于数据文件而言,其磁盘访问的基本单位是 8Kb 页。它主要在检查点期间写入数据,但也会在可能的情况下延迟写入数据。SQL
不会等待数据磁盘写入完成后再返回,只需完成日志写入即可。如果您只能在磁盘上保留一个数据库日志,那么它将是顺序写入,并且在普通的快速硬盘上不会有问题。
从 SQL 的角度来看,性能受到影响是当它必须读取磁盘时。如果您可以给它更多内存,那么 SQL 将在内存中保存更多数据页,这比任何类型的磁盘(SSD 或其他)都快。显然,您还可以通过创建适当的索引来减少磁盘读取次数。我预计 SSD 也会对这些读取有所帮助,因为它们可能是随机的,并且会等待驱动器磁头移动。
我不知道我们在这里讨论的数据库大小是多少,但您可能想看看 HyperOS。他们制造的 SATA 磁盘实际上只是一堆 DDR2 内存条,使用 SSD 或 2.5 英寸磁盘作为备份。那么服务器的访问模式就无关紧要了。不过我不会将日志放在任何类似的东西上。日志可以保持数据的一致性,它们需要放在可靠的介质上,尽管它有备用的 SSD 和电池,服务器可能还有 UPS 等,但如果没有将日志放在某种容错 RAID 阵列中的真正硬盘上,我仍然会感到不安。

答案3

由于磁头寻道延迟,小型随机操作是传统磁盘的克星......SSD 非常适合解决这个问题。

对于长时间连续的操作,标准磁盘的表现相当不错,因此没有必要使用 SSD(当然,从性能的角度来看)。

答案4

我建议对齐存储数据库文件的分区。

我还建议决定在 RAID 0 上进行哪些操作(ldf 和 TempDB),并将关键数据放在 RAID 1(mdf)上。

第三,您确实应该更新驱动器的固件以及 SATA 控制器固件/驱动程序。通过这样做,您可以让硬件公司及其开发人员有机会为您优化性能。

相关内容