徵兆
在 Windows 上的 Microsoft SQL Server 2016 或 SQL Server 2017 中,您可能會在下列情況下遇到效能降低的情況:
-
當您在暫存表格中執行多個並行 INSERTSELECT 運算時。
-
當您查詢sys.dm_os_waiting_tasks。 在這種情況下, resource_description 欄會顯示在 [無頁面空間] (PFS) 頁面上等待多個要求。
原因
insert parallelism for INSERTSELECT operations was introduced in SQL Server 2016 or SQL Server 2017 on Windows. INSERT 進入本機暫存資料表 (只有由 # 前置詞識別的運算子,而非由 ## 首碼識別的全域暫存表) 現在會自動啟用平行式,而不需要指定非暫存資料表所需的 TABLOCK 提示。 雖然 INSERT 平行式通常能改善查詢效能,但如果有大量並行暫存資料表 INSERTSELECT 作業,則對 PFS 頁面的分析可能相當顯著。 在某些情況下,這可能會導致效能整體降低。
解決方案
此問題在SQL Server 2016 Service Pack 1 中首次修正。 在您套用 SQL Server 2016 SP1 之後,INSERT.中的 Parallel INSERT。預設會停用 SELECT 到本機暫存表,以減少 PFS 頁面上的爭議,並改善並行工作負載的整體效能。 如果需要平行 INSERTs 與本機臨時表格,使用者應在插入本機臨時表格時使用 TABLOCK 提示。如果您已啟用因應措施區段中提及的追蹤標幟 9495,建議您在將 SQL Server 2016 SP1 套用為追蹤標幟 9495 之後,停用並移除追蹤標幟,而不論 TABLOCK 提示是否停用平行插入。
累積更新資訊
此問題已于 2016 年 SQL Server 下列累積更新中修正:
關於 SQL Server 的累積更新