SQL Server 中 I/O 扇区大小错误导致性能下降

适用于: SQL Server

本文介绍了当物理扇区大小在磁盘驱动器之间不同时,如何解决 SQL Server 中未对齐的 I/O作导致性能下降的问题。

概述

当磁盘驱动器的物理扇区大小在服务器或存储系统之间不同时,SQL Server 可能会遇到未对齐的 I/O作。 此条件可能会降低性能,在扇区大小不匹配明显的环境中尤其常见,例如:

  • 具有附加存储的虚拟机
  • Always On 可用性组
  • 日志传送
  • 硬件迁移

例如,当主服务器使用 4 KB 扇区大小,而辅助服务器使用 512 字节时,会出现一个常见问题。 此问题会导致在日志同步或还原过程中执行未对齐的 I/O作。 这种不对齐可能会导致性能下降,例如还原速度缓慢或同步延迟。

跟踪标志 1800 可确保 SQL Server 对事务日志 I/O作使用一致的 4 KB 扇区大小,而不考虑基础磁盘的物理扇区大小。 此跟踪标志旨在维护混合环境中的性能,在这些环境中,服务器可能已升级或迁移到具有不同存储规范的硬件。

对于具有写入密集型工作负荷的数据库,对齐 I/O作可以显著提高性能,而在读取密集型环境中,优势可能微不足道。

症状

如果遇到以下任何症状,SQL Server 的性能可能会降低,因为 I/O作未对齐:

  • 同步或还原时间缓慢:未对齐的 I/O作可能会导致同步或还原时间缓慢,尤其是在分布式 SQL Server 环境中,例如 AlwaysOn 可用性组或日志传送。

  • SQL Server 错误日志中的错误消息:与 I/O作相关的错误消息可以指示不对齐问题,例如:

    There have been # misaligned log IOs which required falling back to synchronous IO.

  • 写入密集型作期间出现性能瓶颈:写入密集型作(如日志备份或数据库还原)可能会遇到较高的磁盘延迟和由于 I/O作不对齐而增加的 I/O 等待时间,从而导致性能瓶颈和响应时间缓慢。

验证扇区大小

为了避免 I/O作不对齐,必须确保磁盘驱动器的物理扇区大小在所有服务器和存储系统中保持一致。

可以通过在提升的命令提示符中运行以下命令来验证 扇区大小

fsutil fsinfo sectorinfo <volume path name>

以下屏幕截图显示了驱动器的 fsutil fsinfo sectorinfo 命令 E: 输出,该驱动器的扇区大小为 8 KB,但物理扇区大小为 4 KB,导致 I/O作不对齐:

8 KB 扇区大小的命令提示符输出的屏幕截图。

解决方案

如果由于 I/O作错误而性能下降,并且无法修改扇区大小,则可以使用跟踪标志 1800 作为全局启动参数,以强制 SQL Server 对事务日志 I/O作使用一致的 4 KB 扇区大小。

若要启用跟踪标志 1800 作为启动参数,请执行以下步骤:

  1. 在安装 SQL Server 的系统上,打开SQL Server 配置管理器

  2. 展开SQL Server 配置管理器(本地),然后选择“SQL Server 服务”。

  3. 右键单击要配置的 SQL Server 实例,然后选择“ 属性

    SQL Server 服务右键单击菜单的屏幕截图,其中突出显示了“属性”。

  4. SQL Server 属性,选择“启动参数”选项卡,在“指定启动参数”字段中输入-T1800,然后选择“添加”以将参数添加到列表中。

    在 SQL Server 属性中将跟踪标志添加为启动参数的屏幕截图。

  5. 确认跟踪标志已添加到启动参数列表中。 选择“确定保存更改:

    SQL Server 属性窗口的屏幕截图,其中突出显示了启动参数。

  6. 重启 SQL Server 服务,以便在实例启动时启用跟踪标志。

参考

KB3009974 - 修复:磁盘具有不同扇区大小时同步速度缓慢