如何加快 Amazon EC2 上的 SQL Server 查询?

如何加快 Amazon EC2 上的 SQL Server 查询?

我们的 SQL 查询有时耗时太长。我们有一个 Windows Server 2003/SQL Server 2005 设置。我们已经在所有可能的地方创建了索引。我们能得到更快的磁盘吗?有人有什么想法吗?

答案1

目前的想法(截至 2011 年 7 月)是,EC2 上的最佳性能是对临时磁盘进行 RAID(您的实例越大,它们的数量就越多)。如果您选择这样做,最好确保您有备份,因为任何类型的主机故障都意味着您的数据可能会消失。

正如汤姆所建议的,您可以对 EBS 卷进行 RAID:性能不如您必须进入网络那么好,但是随着您增加可以并行寻道的主轴数量,您将减少寻道。以下是一些很好的基准

还有其他因素需要考虑,比如实例大小可能会让你获得最少的争用,而 EBS 卷大小可以最大程度地提高你的性能在使用卷之前,请务必“预热”它们,因为临时磁盘存在首次写入惩罚,而 EBS 存在首次读取惩罚。

最后,你找不到比 Brent Ozar 更专业的 SQL Server 专家了,所以请阅读并理解他关于该主题的帖子.这导致了AWS 论坛上的对话其中讨论了您可以优化的相对性能指标。

答案2

拿一大堆 EBS 卷,把它们捆绑成一个 RAID10 阵列。然后把你的数据放到这个阵列上,理论上你应该能得到更好的 表现

在 Linux 上有效。我不知道如何在 Windows 上做到这一点,但这只是理论上的。

答案3

我建议,与任何性能问题一样,测量并识别瓶颈。使用经过充分验证的方法,例如等待和排队。只有确定了问题的原因后,你才能提出并测试解决方案。这似乎很明显,但很少有人这样做……

当问题被确定为由无法通过其他方式解决的高 IO 引起时,突袭 EBS 或临时卷是一种解决方案。由于您在 EC2 上部署,因此您的解决方案应设计为适合 EC2 实例,而不会溢出缓冲池(无需从磁盘读取),并且唯一的 IO 应该是初始预热、检查点的更新刷新以及日志刷新。如果您发现自己需要比这更多的 IO,那么最好的方法是分析数据库结构和应用程序代码并让它们适合您的目标主机,您将从中获得比其他任何方法都要多得多的收益。什么确切的意思再次完全取决于你的应用和调查结果。

相关内容