监视磁盘的使用情况

Microsoft SQL Server 使用 Microsoft Windows 操作系统输入/输出 (I/O) 调用对磁盘执行读写操作。SQL Server 管理何时以及如何执行磁盘 I/O,而 Windows 操作系统执行的是基础的 I/O 操作。I/O 子系统包括系统总线、磁盘控制卡、磁盘、磁带驱动器、CD_ROM 驱动器以及许多其他 I/O 设备。磁盘 I/O 是导致系统瓶颈的最常见原因。

监视磁盘活动涉及两个主要方面:

  • 监视磁盘 I/O 及检测过度换页
  • 隔离 SQL Server 产生的磁盘活动

监视磁盘 I/O 及检测过度换页

可以对下面两个计数器进行监视以确定磁盘活动:

  • PhysicalDisk: % Disk Time
  • PhysicalDisk: Avg. Disk Queue Length

在系统监视器中,PhysicalDisk:% Disk Time 计数器监视磁盘忙于读/写活动所用时间的百分比。如果 PhysicalDisk: % Disk Time 计数器的值较高(大于 90%),请检查 PhysicalDisk: Current Disk Queue Length 计数器了解等待进行磁盘访问的系统请求数量。等待 I/O 请求的数量应该保持在不超过组成物理磁盘的轴数的 1.5 到 2 倍。大多数磁盘只有一个轴,但独立磁盘冗余阵列 (RAID) 设备通常有多个轴。硬件 RAID 设备在系统监视器中显示为一个物理磁盘。通过软件创建的多个 RAID 设备在系统监视器中显示为多个实例。

可以使用 Current Disk Queue Length% Disk Time 计数器的值检测磁盘子系统中的瓶颈。如果 Current Disk Queue Length% Disk Time 计数器的值一直很高,则考虑下列事项:

  • 使用速度更快的磁盘驱动器。
  • 将某些文件移至其他磁盘或服务器。
  • 如果正在使用一个 RAID 阵列,则在该阵列中添加磁盘。

如果使用 RAID 设备,% Disk Time 计数器会指示大于 100% 的值。如果出现这种情况,则使用 PhysicalDisk: Avg. Current Disk Queue Length 计数器来确定等待进行磁盘访问的平均系统请求数量。

I/O 依赖的应用程序或系统可能会使磁盘持续处于活动状态。

监视 Memory: Page Faults/sec 计数器可以确保磁盘活动不是由分页导致的。在 Windows 中,换页的原因包括:

  • 配置进程占用了过多内存。
  • 文件系统活动。

如果在同一硬盘上有多个逻辑分区,请使用 Logical Disk 计数器而非 Physical Disk 计数器。查看逻辑磁盘计数器有助于确定哪些文件被频繁访问。当发现磁盘有大量读/写活动时,请查看读写专用计数器以确定导致每个逻辑卷负荷增加的磁盘活动类型,例如,Logical Disk: Disk Write Bytes/sec

隔离 SQL Server 产生的磁盘活动

可以进行监视以确定由 SQL Server 组件生成的 I/O 活动量的两个计数器为:

  • SQL Server:Buffer Manager:Page reads/sec
  • SQL Server:Buffer Manager:Page writes/sec

在系统监视器中,这些计数器通过检查以下操作的性能监视由 SQL Server 组件生成的 I/O 活动量。

  • 向磁盘写入页
  • 从磁盘读取页

如果这些计数器的值达到硬件 I/O 子系统的容量限制,则需要减小这些值,方法是调整应用程序或数据库以减少 I/O 操作(如索引覆盖、索引优化或规范化),增加硬件的 I/O 容量或添加内存。例如,您可以使用数据库引擎优化顾问分析典型的 SQL Server 工作负荷,并提出有关索引、索引视图和分区的建议以提高服务器的性能。有关数据库引擎优化顾问的详细信息,请参阅优化物理数据库设计