使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

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

  • 在临时表中运行多个并发 INSERTSELECT 操作时。

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

原因

WINDOWS SQL Server 2016 或 SQL Server 2017 中引入了 INSERTSELECT 操作的 INSERT 并行度。 本地临时表中的 INSERT 仅 (#前缀标识的表,而不是 ## 前缀) 标识的全局临时表,现在会自动启用并行度,而无需指定非临时表所需的 TABLOCK 提示。 

尽管 INSERT 并行度通常可提高查询性能,但如果存在大量并发临时表 INSERTSELECT 操作,则争用对 PFS 页可能很大。 在某些情况下,这可能会导致整体性能下降。

解决方法

此问题首先在 SQL Server 2016 Service Pack 1中修复。 应用 SQL Server 2016 SP1 后,在 INSERT 中并行 INSERT。默认情况下禁用 SELECT 到本地临时表,这可以减少 PFS 页上的争用并提高并发工作负荷的整体性能。 如果需要与本地临时表并行 INSERT,则用户应在插入本地临时表时使用 TABLOCK 提示。

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

累积更新信息

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

关于SQL Server的累积更新

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×