改进:对 SQLIOSim 实用工具进行多项增强

摘要

此改进对 SQLIOSim 实用工具进行了以下增强,并修复了 I/O 处理可能导致的数据完整性问题。 有关 SQLIOSim 实用工具的详细信息,请参阅 SQLIOSim 实用工具简介

增强的日志记录

  • 添加新的环形缓冲区以跟踪错误,以便不太可能因为滚动更新而替换历史记录环缓冲区中的错误。
  • 添加包含“时钟周期计数”和/或“日期和时间”的各种输出,以便更轻松地调试问题。
  • 将 的输出 fsutil 和卷信息添加到错误文件,以便将文件偏移映射到物理磁盘上的偏移量,并更轻松地筛选 I/O 子系统跟踪。
  • 添加协调世界时 (UTC) 和本地时间的输出。
  • 将页眉输出分解为错误文件,例如 PageId、校验和和时间戳。
  • 显示环形缓冲区的页面 FILE HISTORY 列表,以便更轻松地找到环形缓冲区条目。
  • Sqliosim.log.xmlErrorLog.xslt 视图中显示时间戳、日期时间、逻辑 CPU 和其他列。
  • 增加环形缓冲区的大小并降低滚动更新的频率。
  • 为公共输出(如 PageId、校验和和和时间戳)提供十六进制和十六进制输出。
  • 汇报 Sqliosim.log.xml 的布局,以便更轻松地在文本编辑器中读取 XML 文件。
  • 可以在使用 Internet Explorer (IE) 模式的 Microsoft Edge 中正确查看验证Sqliosim.log.xml和 ErrorLog.xslt

页眉时间戳

在写入操作期间, GetTickCount64 将值存储在页眉中。 时钟周期计数可用于在写入页面和筛选 I/O 子系统跟踪时进行跟踪。

BNR (Bytes-Not-Read)

I/O 问题会导致返回读取操作,就像读取操作成功一样,但实际缓冲区未更新或读取。 SQLIOSim 实用工具接收成功的读取,但验证检查失败。

SQLIOSim 实用工具现在使用 BNR 模式在发出读取之前标记读取缓冲区。 当读取操作成功返回但无法执行实际读取时,验证将继续失败。 但是,读取的字节显示 。指示 I/O 子系统问题的 BNR 模式。

写入重试

如果 I/O 子系统在直连存储 (DAS) 安装) 中遇到更常见的重置 (,则写入操作请求可能无法正确完成。 SQLIOSim 实用工具不保证写入重试功能。 在某些情况下,SQLIOSim 实用工具会尝试读取和验证无法写入的数据。

SQLIOSim 实用工具已得到增强,可记录写入失败,然后执行写入重试操作。

增强的锁定

VirtualProtect) 活动 (的内部锁定机制和页面保护已经过优化和增强,以确保 SQLIOSim 实用工具报告的问题不是由 SQLIOSim 实用工具中的逻辑缺陷引起的。

读取-重试

修复了在重试失败的 LDX 时导致读取重试尝试失败的问题, (日志模拟) 读取。

增强输出的示例

增强输出的第一个示例包括以下增强功能:

  • UTC 时间
  • 十六进制和十进制
  • 时间戳/刻度计数
  • BNR
  • 页眉扩展

增强输出的屏幕截图,其中包括 UTC 时间、十六进制和十进制、时间戳/刻度计数、BNR 和页眉扩展。

增强输出的第二个示例包括以下增强功能:

  • 环形缓冲区
  • UTC 时间
  • 页面范围分组

增强输出的屏幕截图,其中包括环形缓冲区、UTC 时间和页面范围分组。

增强输出的第三个示例包括以下增强功能:

  • 时钟周期计数列
  • 逻辑 CPU 列

增强输出的屏幕截图,其中包括时钟周期计数和逻辑 CPU 列。

更多信息

此改进包含在以下SQL Server累积更新中:

2022 SQL Server累积更新 7

关于SQL Server的累积更新

SQL Server的每个新累积更新都包含上一版本中的所有修补程序和安全修补程序。 建议为 SQL Server 版本安装最新版本:

SQL Server 2022 的最新累积更新

References

了解 Microsoft 用于描述软件更新 的术语