修复: SQL Server 服务执行比镜像服务器上的多个 I/O 操作在主服务器上

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3103472
症状
假定您有一个数据库镜像主体服务器和镜像服务器之间建立主体服务器和镜像服务器正在运行 Microsoft SQL Server 2005年,Microsoft SQL Server 2008 中,或者 Microsoft SQL Server 2008 R2。服务器升级到 SQL Server 2012年或 SQL Server 2014年时,镜像服务器在 SQL Server 2012年或 SQL Server 2014 比早期版本的 SQL Server 中执行更多的 I/O 请求,镜像服务器会执行更多比主体服务器的输入/输出请求。

注意:在早于 SQL Server 2012年的 SQL Server 版本时会出现此问题。以后发布的修复程序的其他版本。
原因
当在镜像服务器上,数据库镜像的线程问题预读请求已更改的数据库页从磁盘读取到缓冲区池处理日志块。

在版本早于 SQL Server 2012 年获得 8 千字节 (KB) 数据库页升级到 64 KB I/O 请求的请求。因此,您必须从磁盘中更少的输入/输出请求缓冲池中提取更多页面。

在 SQL Server 2012年和 2014 SQL Server,8 KB 的数据库页是从磁盘读取到缓冲区池使用单个 8 KB I/O 请求。因此,您会发现使用 8 KB 的 I/O 请求太多 I/O 系统处于满负荷状态。
解决方案

累积更新信息

应用此累积更新后,您会注意到一个 8 KB 的数据库页的预读请求升级到 64 KB 的 I/O 请求。
第一次修复该问题的SQL Server累积更新包 建议: 设置 SQL Server 的累积更新
SQL Server 的每个新累积更新包含所有修补程序和所有安全修补程序,已包含在以前的累积更新。我们建议您下载并安装最新的累积更新 SQL Server:

替代方法
要变通解决此问题,您可以禁用预读在镜像服务器上的数据库页使用跟踪标志 652。但是,我们不建议此方法。当镜像服务器遇到故障转移,并且担当主要角色,则会影响查询性能。
更多信息
  • 日志传送辅助服务器在 SQL Server 2012年和 2014 SQL Server 中存在同样的问题。但是,此累积更新不解决日志传送方案问题。
  • 这个问题不存在 SQL Server 2012年和 2014 SQL Server 中,Always-On 可用性组辅助副本。
  • 此累积更新只修正过多发生在镜像服务器的读的请求。如果您遇到过多的写入请求,在镜像服务器上,可以考虑使用跟踪标志 3499 来避免每次更改应用于数据库页的数据库页写入。
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。

警告:本文已自动翻译

属性

文章 ID:3103472 - 上次审阅时间:12/22/2015 02:47:00 - 修订版本: 2.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB3103472 KbMtzh
反馈