为什么我的 Azure SQL Server 这么慢?

Ste*_*aye 10 performance sql-server azure-vm

我们目前有一个功能非常不足的 VM,并建议迁移到具有更好规格的 Azure VM。问题是,Azure VM 比原始 VM 慢得多,即使它的规格更高。

原始服务器是一个具有 2GB 内存的 2 核 VM,它也是一个 Web 服务器。它运行的是 Microsoft SQL Server Web Edition 2008 R2,并且由于该服务器用于其他用途,我们不得不将 SQL Server 中的最大服务器内存限制为512MB

新服务器是一个具有 7GB 内存的 4 核 VM,它只是一个数据库服务器。它运行的是 Microsoft SQL Server Standard Edition 2008 R2,我们没有限制 SQL Server 可以使用的内存量。

这是在镜像环境中设置的两台服务器之一,但我正在运行测试的数据库没有镜像。该服务器上的其他数据库目前没有太多流量(实际上,当我运行这些测试时,活动监视器没有显示其他数据库上的活动)。

我确实意识到 Azure VM 的一个问题是硬盘驱动器是一种网络资源,因此这将是减速的根源,但即使 IO 统计数据中显示 0 次物理读取,它仍然更慢。

我在 Azure VM上遵循了此页面上的调整建议,包括对磁盘进行条带化(每个驱动器两个磁盘)并将日志和数据文件放在不同的驱动器上。

我唯一没有做的事情是启用页面压缩、限制数据库的自动增长以及将 SQL 服务器错误日志和跟踪文件目录移动到数据磁盘。我也没有在旧服务器上这样做。

旧服务器没有进行任何调整,日志和数据文件位于未条带化的同一驱动器上。

当前服务器上的数据库是 65 GB(45 条数据和 20 条日志),这对于传输到新服务器来说有点太大了,所以我正在一个较小的数据库上进行测试(6 条数据和 13.5 条日志)

旧服务器上的结果CPU time = 1311 ms, elapsed time = 1057 ms.和新服务器上CPU time = 1281 ms, elapsed time = 2525 ms. 的结果只是一次运行,但结果代表了我通常看到的情况。

新服务器的运行时间似乎总是明显长于 CPU 时间。这是一个问题吗,我可以做些什么来追踪导致它的原因吗?

我还可以采取哪些其他步骤来找出为什么该服务器看起来应该比旧服务器更快时运行速度如此缓慢?

小智 2

为了值得,我最终将 Azure 中的 VM 从类型 A 更改为类型 D,然后附加另一个磁盘并将 TEMPDB 移动到该磁盘。因此,我现在的最终虚拟机是具有 7 GB RAM 和三个数据磁盘的 D2 标准,一个用于 MDF 文件,另一个用于 LDF 文件和新的 TEMPDB 磁盘。

我放弃了尝试用A3来理解你提到的一些事情,只是升级了虚拟机。我什至从 A2 升级到 A3,尽管我确实发现了一些改进,但我最终还是更改为 D2 虚拟机。

在您提到的文档中,Microsoft 建议使用 D3(企业版)或 D2(Web 版或标准版),并使用高级存储,以及文档开头的检查列表中的其他内容。