导出 (0) 打印
全部展开

Azure 虚拟机中 SQL Server 的性能最佳实践

更新时间: 2015年2月

本主题提供了有关优化 Microsoft Azure 虚拟机 中的 SQL Server 性能的最佳实践。在 Azure 虚拟机中运行 SQL Server 时,建议使用与本地服务器环境中的 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 虚拟机时,平台将为虚拟机附加至少一个磁盘作为操作系统磁盘。这一磁盘在存储中存储为页面 Blob 形式的 VHD。你也可以向虚拟机附加更多磁盘作为数据磁盘,这些磁盘也在存储中存储为页面 Blob 形式。Azure 虚拟机中还有一个名为临时磁盘的磁盘。这是节点上可用作暂存空间的磁盘。

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

操作系统磁盘中的默认缓存策略为“读/写”。对于性能敏感型应用程序,建议使用数据磁盘而不是操作系统磁盘。将一个或多个数据磁盘附加到虚拟机,且不更改默认的缓存策略(对于数据磁盘为“无”)。

卷标为 D: 驱动器的临时存储驱动器不会永久保存在 Azure Blob 存储中。不要将数据或日志文件存储在 D:驱动器上。

仅当使用 D 系列虚拟机 (VM) 时,才应该将 tempdb 和/或缓冲池扩展存储在 D 驱动器上。与其他 VM 系列不同,D 系列 VM 中的 D 驱动器基于 SSD。这可以提高密集使用临时对象或者其工作集无法装入内存的工作负载的性能。有关详细信息,请参阅使用 Azure VM 中的 SSD 来存储 SQL Server TempDB 和缓冲池扩展

  • 数据磁盘数:对于吞吐量敏感型应用程序,建议附加 VM 大小所允许的最多数目的磁盘。请注意,如果工作负载在最大 IOPS 限制范围内良好工作,则添加更多的数据磁盘不会减少延迟。

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

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

    有关配置磁盘缓存的说明,请参阅以下主题:Set-AzureOSDiskSet-AzureDataDisk

  • 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 密集型工作负荷的性能。不过,数据压缩可能会提高数据库服务器上的 CPU 使用量。

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

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

  • autogrow被认为只是偶尔发生的非预期增长。请不要使用自动增长来管理日常的数据与日志增长。如果使用自动增长,请使用 Size 开关预先增长文件。

  • 确保已禁用autoshrink,以避免发生不必要的系统开销,从而对性能造成负面影响。

  • 如果运行的是 SQL Server 2012,请安装 Service Pack 1 累积更新 10。此更新包含的修复程序可以解决当你在 SQL Server 2012 中执行 select into temporary table 语句时出现的 I/O 性能不良问题。有关信息,请参阅此知识库文章

  • 将 SQL Server 的系统数据库(例如 msdbtempdb)、备份和默认的数据与日志目录移至非缓存数据磁盘以提高性能。然后,执行下列操作:

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

    • 调整 SQL 错误日志路径。

    • 调整默认的备份路径。

    • 调整默认的数据库位置。

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

某些部署可以使用更高级的配置技术来获得更多的性能优势。以下列表重点提供了可帮助你实现更好性能的某些 SQL Server 功能:

另请参阅

显示:
© 2015 Microsoft