导出 (0) 打印
全部展开

Azure 虚拟机中的 SQL Server 的性能注意事项

更新时间: 2014年6月

注:本页面内容可能不完全适用中国大陆地区运营的 Windows Azure服务。如要了解不同地区 Windows Azure 服务的差异, 请参考本网站 http://www.windowsazure.cn.

在 Azure 虚拟机中运行 SQL Server 时,建议使用与本地服务器环境中的 SQL Server 适用的数据库性能优化选项相同的选项。不过,公有云中的关系数据库的性能取决于很多因素,如虚拟机大小和数据磁盘配置。

本主题提供一些优化 Azure 虚拟机 (VM) 中的 SQL Server 性能的建议和指导原则。

重要说明:有关详细信息,请参阅 Azure 虚拟机中 SQL Server 的性能指南白皮书。

快速检查列表

下面是你可以使用的快速检查列表:

  • 对于 SQL Server VM,使用的最小虚拟机大小为标准层 A2。

  • 将存储帐号和 SQL Server VM 保留在同一区域中。

  • 在存储帐户上禁用 Azure 地域复制。

  • 避免将操作系统磁盘或临时磁盘用于数据库存储或日志记录。

  • 避免使用 Azure 数据磁盘缓存选项(缓存策略 = 无)。

  • 将多个 Azure 数据磁盘条带化以提高 IO 吞吐量。

  • 按照文档说明的分配单元大小执行格式化。

  • 隔离数据和日志文件 I/O 路径,以获取数据和日志的专门 IOPS。

  • 启用数据库页压缩。

  • 启用数据文件的即时文件初始化。

  • 限制或禁用数据库上的自动增长。

  • 禁用数据库上的自动收缩。

  • 将所有数据库移动至数据磁盘,包括系统数据库。

  • 将 SQL Server 错误日志和跟踪文件目录移动至数据磁盘。

  • 应用 SQL Server 性能修复。

  • 设置默认位置。

  • 启用页面锁定。

  • 直接备份到 Blob 存储。

有关更多信息,请参阅以下小节中提供的指导原则。

虚拟机大小和存储帐户注意事项

对于性能敏感型应用程序,建议你使用以下虚拟机大小:

  • SQL Server Enterprise Edition:标准层 A3 或更高

  • SQL Server Standard Edition:标准层 A2 或更高

有关支持的虚拟机大小的最新信息,请参阅 Azure 的虚拟机和云服务大小

此外,我们建议你在 SQL Server 虚拟机所在的同一个数据中心内创建 Azure 存储帐户,以减少传输延迟。创建存储帐户时,请禁用地域复制,因为无法保证在多个磁盘上保持一致的写入顺序。相反,应考虑配置两个 Azure 数据中心之间的 SQL Server 灾难恢复技术。有关详细信息,请参阅Azure 虚拟机中 SQL Server 的高可用性和灾难恢复

磁盘和性能注意事项

创建 Azure 虚拟机时,平台会为 VM 附加至少一个磁盘作为操作系统磁盘。这一磁盘在存储中存储为页面 Blob 形式的 VHD。你也可以向虚拟机附加更多磁盘作为数据磁盘,这些磁盘也在存储中存储为页面 Blob 形式。Azure 虚拟机中还有一个名为临时磁盘的磁盘。这是节点上可用作暂存空间的磁盘。

操作系统磁盘

操作系统磁盘是一个 VHD,可以作为操作系统运行版本启动和安装,卷标为 C 驱动器。

操作系统磁盘上的默认缓存策略为“读/写”。对于性能敏感型应用程序,我们建议你使用数据磁盘,而不要使用操作系统磁盘。将一个或多个数据磁盘附加到虚拟机,而不更改默认缓存策略,数据磁盘的这项默认配置为“无”

临时磁盘

卷标为 D: 驱动器的临时存储驱动器不是永久性的,也不保存在 Azure Blob 存储中。它主要用于页面文件,不保证可预测其性能。更改虚拟机大小等管理任务会重置 D:文件。此外,当虚拟机发生故障转移时,Azure 将清除临时存储驱动器上的数据。建议不要使用 D:驱动器来存储任何用户或系统数据库文件(包括 tempdb)。

数据磁盘

  • 数据磁盘数目:对于吞吐量敏感型应用程序,我们建议你附加 VM 大小允许的最大数量磁盘。请注意,如果工作负荷在最大 IOPS 限制范围内,则无法通过添加更多数据磁盘来减少延迟。

    有关每个磁盘的最大 IOPS 的信息,请参阅 Azure 的虚拟机和云服务大小

  • 缓存策略:默认情况下,数据磁盘上已禁用读缓存和写缓存。请在数据磁盘上使用此默认设置,而不要启用任何缓存。有关磁盘缓存的详细信息,请参阅管理磁盘和映像

    有关配置磁盘缓存的说明,请参阅以下主题:Set-AzureOSDiskSet-AzureDataDisk使用 Azure PowerShell Cmdlet 管理虚拟机

  • NTFS 分配单元大小:格式化数据磁盘时,建议你为数据和日志文件以及 tempdb 使用 64-KB 的分配单元大小。

  • 磁盘条带化:我们建议你遵循以下指导原则:

    • 对于 Windows 8/Windows Server 2012 或更高版本,请使用存储空间。将 OLTP 工作负荷的带区大小设置为 64 KB,将数据仓库工作负荷的带区大小设置为 256 KB,以避免由于分区不匹配导致的性能影响。此外,请设置 column count = number of physical disks。有关如何配置存储空间的详细信息,请参阅 Windows PowerShell 中的存储空间 Cmdlet

    • 对于 Windows 2008 R2 或更早版本,你可以使用动态磁盘(操作系统带区卷),带区大小始终为 64 KB。请注意,从 Windows 8/Windows Server 2012 开始,不再推荐使用此选项。有关信息请参阅虚拟磁盘服务正在转换到 Windows 存储管理 API 上的支持说明。

  • 数据和日志文件放置:如果你的工作负荷不是日志密集型的,不需要专门的 IOPS,你可以只配置一个存储池。但是,对于允许附加 4 个以上磁盘的 VM,请将数据和日志文件放置在单独的磁盘或存储池中。对于标准层 A2,我们建议为数据文件和 tempdb 配置三个数据磁盘,为日志文件配置一个数据磁盘。根据工作负荷是否对数据或日志敏感,你可以相应调整专用于数据或日志存储池的磁盘数量。

I/O 性能注意事项

  • 考虑使用数据库页压缩,这有助于提高 I/O 密集型工作负荷的性能。不过,数据压缩可能会提高数据库服务器上的 CPU 使用量。

  • 考虑在传入/传出 Azure 时压缩所有数据文件。

  • 考虑启用即时文件初始化以缩短初始文件分配所需的时间。若要利用即时文件初始化,应该向 SQL Server (MSSQLSERVER) 服务帐户授予 SE_MANAGE_VOLUME_NAME 并将其添加到“执行卷维护任务”安全策略中。如果使用的是用于 Azure 的 SQL Server 平台映像,默认服务帐户 (NT Service\MSSQLSERVER) 将不会添加到“执行卷维护任务”安全策略中。换句话说,SQL Server Azure 平台映像中并未启用即时文件初始化。将 SQL Server 服务帐户添加到“执行卷维护任务”安全策略之后,重新启动 SQL Server 服务。有关详细信息,请参阅数据库文件初始化

  • autogrow仅被视为针对意外增长的应变手段。不要使用自动增长来管理日常的数据和日志增长。如果使用了自动增长,请使用大小开关来预增长文件。

  • 请确保 autoshrink 已禁用,以避免不必要的开销对性能产生负面影响。

  • 如果你运行的是 SQL Server 2012,请安装 Service Pack 1 累计更新包 10。此更新包含了当你在 SQL Server 2012 中执行 select into 临时表语句时出现的 I/O 性能低下情况的修复。有关信息,请参阅这篇知识库文章

  • 将系统数据库(例如 msdbtempdb)、备份以及 SQL Server 默认数据和日志目录移动到非缓存数据磁盘以改进性能。然后,执行以下操作:

    • 调整 XEvent 和跟踪文件路径。

    • 调整 SQL 错误日志路径。

    • 调整默认备份路径。

    • 调整默认数据库位置。

  • 建立页面锁定以减少 IO 和任何分页活动。

功能特定的性能注意事项

使用更先进的配置技术,某些部署可以进一步改进性能。以下列表重点显示了一些有助于提高性能的 SQL Server 功能:

另请参见

社区附加资源

添加
显示:
© 2014 Microsoft