我在 Windows Azure VM Windows Server 2012 上运行 SQL Server 2012。
这是一个实时数据库,约 250GB,使用率很高。
我很久以前就应用了一些针对临时数据库的最佳实践文章,并且将我的主数据库拆分为自己的物理驱动器以用于数据文件和日志文件。
在过去的几天里,我遇到了虚拟机极其缓慢的感觉(尽管数据库响应似乎又快又好)。
VM 在 A7 实例(8 核 56GB Ram)上运行,从性能监视器来看,瓶颈似乎在硬盘上,尤其是运行主数据库的 mdf 文件的硬盘。
我在网上查了一下,决定创建另一个文件组(只有一个主文件组和 mdf 文件组),我将另外 7 个硬盘驱动器连接到机器上,这样我现在有 4 个文件(每个硬盘驱动器...)用于主组,4 个文件(每个硬盘驱动器...)用于我定义为默认的辅助组。之后,我重建了大多数重要表的索引(这导致我为一个重要的大表停机了大约 15 分钟...)。
我预计这些操作会显著影响机器的缓慢程度,但并没有感觉到明显的变化,而且运行 ndf 和 mdf 的驱动器仍然具有相当高的平均磁盘秒/读写速度(读取平均为 0.4,写入平均为 0.01-0.02)
我遗漏了什么吗?
编辑:
好的,所以从我实施更改大约 24 小时后,它似乎运行良好,磁盘读/写似乎更好,并且机器运行速度很快。
说实话,我无法解释为什么它花了大约 24 个小时,但我对它有效这一事实感到满意 :)
答案1
您错过了基本步骤。显然这是一个新问题。在找出原因之前,不要用硬件解决问题。可能是正确的,但更可能是糟糕的 SQL/缺少索引。使用标准 dba 方法,找出使用了这么多 IO 的原因。并不是说 Server 2012 中没有工具可以实现“将一个活动监视器作为第一步”。