Symptomer
I Microsoft SQL Server 2016 eller SQL Server 2017 på Windows kan du opleve nedsat ydeevne under følgende betingelser:
-
Når du kører flere samtidige INSERTSELECT-handlinger i midlertidige tabeller.
-
Når du forespørger sys.dm_os_waiting_tasks. I denne situation viser kolonnen resource_description ventetider på sider med side ledig plads (PFS) for flere anmodninger.
Årsag
INSERT-parallelisme for INSERTSELECT-handlinger blev introduceret i SQL Server 2016 eller SQL Server 2017 på Windows. INSERTs i lokale midlertidige tabeller (kun dem, der er identificeret med #-præfikset og ikke globale midlertidige tabeller identificeret med ##-præfikser) aktiveres nu automatisk til parallelisme uden at skulle angive det TABLOCK-tip, som ikke-midlertidige tabeller kræver.
Selvom INSERT-parallelisme typisk forbedrer forespørgselsydeevnen, kan striden være betydelig i forhold til PFS-sider, hvis der er et betydeligt antal samtidige midlertidige insertselect-handlinger. I nogle tilfælde kan dette medføre et generelt fald i ydeevnen.
Løsning
Problemet er først løst i SQL Server 2016 Service Pack 1. Når du har anvendt SQL Server 2016 SP1, parallel INSERTs i INSERT.. SELECT til lokale midlertidige tabeller deaktiveres som standard, hvilket reducerer striden på PFS-siden og forbedrer den overordnede ydeevne for samtidig arbejdsbelastning. Hvis der ønskes parallelle INSERT'er til lokale midlertidige tabeller, skal brugerne bruge TABLOCK-tip, mens de indsætter dem i en lokal midlertidig tabel.
Hvis du har aktiveret Sporingsflag 9495, der er nævnt i afsnittet om løsning, anbefales det at deaktivere og fjerne sporingsflaget efter anvendelse af SQL Server 2016 SP1 som Sporingsflag 9495 deaktiverer parallel indsættelse uanset TABLOCK-tippet.
Oplysninger om samlet opdatering
Dette problem blev rettet i følgende kumulative opdatering til SQL Server 2016:
Om kumulative opdateringer til SQL Server