当您运行插入性能较差.选择 SQL Server 2016年中操作

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

点击这里察看该文章的英文版: 3180087
症状
在 Microsoft SQL Server 2016,您可能会遇到下列情况下的性能下降︰
  • 当您运行多个并发插入...选择插入临时表的操作。
  • 当您查询 sys.dm_os_waiting_tasks。在此情况下, resource_description列显示等待页面可用空间 (PFS) 的多个请求的页面上。
原因
插入并行...在 SQL Server 2016年引入了选择操作。局部临时表中插入 (只有那些由 # 前缀和非全局临时表由 # # 前缀) arenow 自动启用并行性,而无需指定 TABLOCK 提示需要非临时表。

虽然插入并行通常可以提高查询性能,如果没有大量的并发临时表插入...选择操作,争用可能明显针对 PFS 页。在某些情况下,这可能导致总体性能下降。
解决方案
在第一次修复了问题 SQL Server 2016 Service Pack 1.在中的并行插入插入应用 SQL Server 2016 SP1 后.选择到本地临时表是默认情况下禁用它可降低 PFS 页上的争用和提高并发工作负载的整体性能。如果需要并行插入到本地临时表,则用户应在本地临时表中插入时使用TABLOCK提示。

如果您启用了跟踪标志 9495 替代方法部分所述,建议禁用和删除 ' 作为跟踪标志 9495 会禁用并行插入而不考虑 TABLOCK 提示应用 SQL Server 2016 SP1 后跟踪标记。

Cumulativeupdate 信息

Thisissuewas 在以下累积更新 SQL Server 2016 年固定︰有关累积更新 SQL Server
SQL Server 的每个新累积更新包含所有修补程序和所有安全修补程序,已包含在以前的累积更新。为 SQL Server,请查阅最新的累积更新︰

最新的累积更新 SQL Server 2016 年


替代方法
若要变通解决此问题,请使用一个或多个下列方法︰
  • 启用跟踪标志 9495 禁用插入过程中的并行度...选择操作。此跟踪标志禁用插入操作的插入部分并行...选择操作,而且它适用于临时和用户的表。若要启用此跟踪标志,或者使用它作为启动参数 (-T9495) 或从一个新的会话使用 DBCC TRACEON(9495,-1)。我们建议使用产品部署中的启动参数以避免运行 DBCC TRACEON 标志每次服务器启动。

    如果您已经安装了 SQL Server 2016年累积更新 1 (CU1),您还可以通过以下方式使用此跟踪标记︰
    • 在会话级别,使用 DBCC TRACEON(9495)
    • 在每个语句级别,使用 QUERYTRACEON(9495) 选项
  • 在临时表上创建索引。在"症状"一节中描述的问题堆发生只能使用临时表。
  • 对有问题的插入使用 MAXDOP 1 查询提示...选择操作。

参考

有关如何配置跟踪标记的详细信息,请参阅以下 SQL Server 联机丛书主题中的"备注"部分︰


警告:本文已自动翻译

属性

文章 ID:3180087 - 上次审阅时间:11/23/2016 23:48:00 - 修订版本: 4.0

Microsoft SQL Server 2016 Developer, Microsoft SQL Server 2016 Standard, Microsoft SQL Server 2016 Enterprise

  • kbmt KB3180087 KbMtzh
反馈