运行 INSERT.. 时性能较差在 SQL Server 2016年或 Windows 上的 SQL Server 2017年选择操作

症状

在 Microsoft SQL Server 2016年或 SQL Server 2017 在 Windows 中,您可能会遇到下列情况下的性能下降:

  • 向临时表运行多个并发的 INSERTSELECT 操作时。

  • 当你查询 sys.dm_os_waiting_tasks 时。在这种情况下,resource_description 列显示对多个请求的页面可用空间 (PFS) 页面的等待。

原因

在 SQL Server 2016年或 Windows 上的 SQL Server 2017年引入了插入 INSERTSELECT 操作的并行度。局部临时表中插入 (只有那些由 # 前缀和非全局临时表由 # # 前缀) 自动现在无需指定 TABLOCK 提示非临时表需要启用并行性。

虽然插入并行通常可以提高查询性能,如果没有大量的并发临时表 INSERTSELECT 操作,争用可能会明显针对 PFS 页。在某些情况下,这可能导致总体性能下降。

解决方案

SQL Server 2016 Service Pack 1首先修复了问题。在中的并行插入插入应用 SQL Server 2016 SP1 后.选择到本地临时表是默认情况下禁用它可降低 PFS 页上的争用和提高并发工作负载的整体性能。如果需要并行 INSERT 到本地临时表,则用户应在插入到本地临时表中时使用 TABLOCK 提示。

如果你已启用解决方法部分中提到的跟踪标志 9495,建议在应用 SQL Server 2016 SP1 后禁用和删除跟踪标志,因为跟踪标志 9495 禁用并行插入,而不考虑 TABLOCK 提示。

累积更新信息

SQL Server 2016 年以下累积更新中修复此问题:

关于 SQL Server 的累积更新

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×