改进:对 SQLIOSim 实用工具进行多项增强
总结
此改进对 SQLIOSim 实用工具进行了以下增强,并修复了 I/O 处理可能导致的数据完整性问题。 有关 SQLIOSim 实用工具的详细信息,请参阅 SQLIOSim 实用工具简介。
增强了日志记录
- 添加新的环形缓冲区来跟踪错误,以使历史记录环缓冲区中的错误不太可能因滚动更新而替换。
- 添加包含“时钟周期计数”和/或“日期和时间”的各种输出,以便更轻松地调试问题。
- 将输出
fsutil
和卷信息添加到错误文件,以便将文件偏移量映射到物理磁盘上的偏移量,并更轻松地筛选 I/O 子系统跟踪。 - 添加协调世界时(UTC)和本地时间的输出。
- 将页眉的输出分解为错误文件,例如 PageId、校验和和时间戳。
- 显示环形缓冲区页
FILE HISTORY
的列表,以便更轻松地找到环形缓冲区条目。 - 显示Sqliosim.log.xml或 ErrorLog.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 时间
- 页面范围分组
增强输出的第三个示例包括以下增强功能:
- 刻度计数列
- 逻辑 CPU 列
详细信息
此改进包含在 SQL Server 的以下累积更新中:
关于 SQL Server 的累积更新
SQL Server 的每个新的累积更新都包含上一个版本中的所有修补程序和安全修补程序。 建议为 SQL Server 版本安装最新版本:
参考
了解 Microsoft 用于描述软件更新的术语。