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

我们的SQL查询有时花费太长时间。 我们有一个Windows Server 2003 / SQL Server 2005安装程序。 我们已经创造了索引到处都是可能的。 我们可以得到更快的磁盘? 任何人的想法?

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

正如汤姆所build议的那样,你可以使用RAID EBS卷:性能不如你必须去networking,但是当你增加可以并行寻找的主轴数量时,你会减less你的寻求。 这里有一些很好的基准 。

还有其他的东西需要考虑,比如实例的大小可能会让你失去最less的争议,而EBS的容量则会让你的performance最大化 。 在使用之前,一定要“预热”你的卷,因为临时磁盘上有第一次写入的惩罚和EBS上的第一次读取惩罚。

最后,你没有比Brent Ozar更多的SQL服务器专家,所以阅读并理解他的主题 。 这导致了AWS论坛上的一次对话 ,谈到您可以优化的相关性能指标。

取一大堆EBS卷,并将它们捆绑在一起成为一个RAID10arrays。 然后把你的数据放在那个数组上,理论上你应该得到更好的 性能 。

在Linux上运行。 我不知道你会怎么做,但这是理论。

与任何性能问题一样,我build议您衡量并确定您的瓶颈。 使用久经考验的方法,如等待和队列 。 只有在确定了问题的原因之后,才能提出并testing解决scheme。 看起来很明显,但却很less

当且仅当问题被认定是由高IO导致的,不能以任何其他方式解决时,突袭您的EBS或临时卷是一种解决scheme。 由于您在EC2上进行部署,因此您的解决scheme应该devise为适合不带缓冲池溢出(无需从磁盘读取)的EC2实例,并且唯一的IO应该是初始预热,在检查点刷新更新,当然,login刷新。 如果你发现自己需要更多的IO,那么最好的办法是分析数据库结构和应用程序代码,并将它们放入目标主机中,这样比其他任何事情都要多得多。 。 又是什么意思,完全取决于你的申请和你的调查结果。