我们在 Azure VM 上托管了一个 SQL 服务器。我们的一个应用程序对数据库的读写非常密集,我们发现磁盘性能很差。磁盘队列长度为 10 或更大。
我一直在尝试寻找提高磁盘性能的方法。我找到了一个 Technet 视频这里提到磁盘配额,跨越 4 个存储帐户会增加磁盘 i/o。有人可以确认这个磁盘限制器或推荐这种跨越技术吗?
答案1
Azure 磁盘以页 blob 的形式存储在 Azure 存储中。存储帐户具有特定的规模目标。当您通过 VM 驱动繁重的磁盘 I/O 负载时,可能会突破这些存储目标的限制。本地冗余存储帐户的性能目标是 10Gbps 入口/15Gbps 出口,而地理冗余帐户的性能目标是 5Gbps 入口/10Gbps 出口。特定 blob(包含单个磁盘)的性能目标是 60MBytes/sec。
这就是为什么您会看到建议(例如 TechNet 视频)在多个存储帐户中使用多个磁盘,以超越特定于帐户的存储规模目标。
以下是一篇文章关于虚拟机大小和相关最大 IOP。您将看到每个虚拟机大小的最大 IOP 相当于附加的 500 x #disks。
本文涵盖在虚拟机中运行 SQL Server 的性能注意事项,其中包括磁盘 IO 等许多主题。
编辑这个答案现在有点过时了。除了标准存储磁盘外,您现在可以将高级存储用于磁盘。高级存储由 SSD 支持,磁盘范围从 500-5000 IOPS 和 100-200MB/秒,具体取决于磁盘层(最高为 1TB、5000 IOPS、200MB/秒)。对于给定的 DS 或 GS 系列 VM,您仍然会有总体限制,但这些限制高于 D 或 G 系列(例如,在 GS5 上最大为 80,000 IOPS 和 2,000 MB/秒)。
有关 VM 大小的更多信息这里。
有关高级存储的更多信息这里。
答案2
如您所见,新的 DS 系列虚拟机(带有本地 SSD 临时驱动器和持久 SSD 支持驱动器)确实存在每个虚拟机的带宽限制在 DS 系列文档中。
每个核心的带宽约为 32 MB/s。