临时存储上的Azure VM SQL Server Tempdb

Iva*_*anL 5 sql-server azure tempdb

我们正在使用VM在Azure云中设置SQL服务器.当我们确定数据/ logs/tempdb的最佳设置时,我们遇到了很多博客帖子,建议将tempdb放在Azure提供的Temporary Storage驱动器上.然而,更深入的研究揭示了微软的这些信息,据说不应该这样做.

所以我们留下了以下问题:

  • 任何人都可以提供一个当前的结束答案,我们是否应该将tempdb放在临时存储器上?
  • 有没有人对此事有明确的表现?
  • 如果将tempdb放在临时存储上,可能会产生哪些副作用?

CSh*_*cks 6

由于最初的建议是将tempdb放在D:驱动器上,所以有一些混乱.这不再是真的.有关最新信息,我建议您阅读此处的"Windows Azure虚拟机中的SQL Server性能指南"白皮书:http://msdn.microsoft.com/en-us/library/windowsazure/dn248436.aspx

这是TempDB部分的摘录:

如Windows Azure虚拟机磁盘和缓存设置一节中所述,我们建议您将tempDB放在操作系统磁盘或数据磁盘而不是临时磁盘(D :)上.以下是基于我们使用SQL Server测试工作负载进行内部测试的建议的三个主要原因.

•性能差异:在我们的测试中,我们注意到您可以获得与D:相同级别的性能,如果不是来自操作系统或单个数据磁盘的更多IOPS.但是,D:驱动器的性能不能保证与操作系统或数据磁盘一样可预测.这是因为D:驱动器的大小和从中获得的性能取决于您使用的虚拟机的大小.

•在VM停机时配置情况:如果虚拟机关闭(由于计划或计划外原因),为了使SQL Server在D:驱动器下重新创建tempDB,启动SQL Server服务的服务帐户需要拥有本地管理员权限.此外,本地SQL部署的常见做法是将数据库和日志文件(包括tempDB)保存在单独的文件夹中,在这种情况下,需要在SQL Server启动之前创建该文件夹.对于大多数客户而言,这种额外的重新配置开销并不值得回报.

•性能瓶颈:如果将tempdb放在D:驱动器上并且应用程序工作负载大量使用tempDB,则可能会导致性能瓶颈,因为D:驱动器可能会在IOPS吞吐量方面引入约束.相反,将tempDB放在操作系统或数据磁盘上以获得更大的灵活性.有关优化tempdb的配置最佳实践的详细信息,请参阅SQL Server TempDB IO最佳实践的编译.


ano*_*non 5

更新: 现在临时驱动器可用作D系列Azure VM的SSD,@ CSharpRocks引用的白皮书略显过时.有关最新建议,请参阅以下两篇文章(截至2014年年中至2015年中):

上面的文章明确提到在D:\上放置tempdb和Buffer Pool Extensions.摘抄:

仅在使用D系列虚拟机(VM)时在D驱动器上存储tempdb和/或Buffer Pool Extensions.与其他VM系列不同,D系列VM中的D驱动器是基于SSD的.这可以改善大量使用临时对象或具有不适合内存的工作集的工作负载的性能.