Symptomen
In Microsoft SQL Server 2016 of SQL Server 2017 in Windows kunnen de prestaties onder de volgende omstandigheden afnemen:
-
Wanneer u meerdere gelijktijdige INSERTSELECT-bewerkingen uitvoert in tijdelijke tabellen.
-
Wanneer u een query uitvoert op sys.dm_os_waiting_tasks. In deze situatie worden in de kolom resource_description wachttijden weergegeven op PFS-pagina's (Pagina vrije ruimte) voor meerdere aanvragen.
Oorzaak
INSERT-parallellisme voor INSERTSELECT-bewerkingen is geïntroduceerd in SQL Server 2016 of SQL Server 2017 in Windows. INSERT's in lokale tijdelijke tabellen (alleen die geïdentificeerd door het voorvoegsel ## en niet globale tijdelijke tabellen die worden geïdentificeerd door ##-voorvoegsels) worden nu automatisch ingeschakeld voor parallellisme zonder dat de TABLOCK-hint moet worden opgegeven die niet-tijdelijke tabellen vereisen.
Hoewel INSERT parallellisme doorgaans de prestaties van query's verbetert, kan het conflict aanzienlijk zijn voor PFS-pagina's als er een aanzienlijk aantal gelijktijdige tijdelijke tabel INSERTSELECT-bewerkingen zijn. In sommige gevallen kan dit leiden tot een algehele afname van de prestaties.
Oplossing
Het probleem wordt eerst opgelost in SQL Server 2016 Service Pack 1. Nadat u SQL Server 2016 SP1, Parallelle INSERTs in INSERT. SELECTEREN naar lokale tijdelijke tabellen is standaard uitgeschakeld, waardoor conflicten op pfs-pagina worden verminderd en de algehele prestaties voor gelijktijdige workload worden verbeterd. Als parallelle INSERTs met lokale tijdelijke tabellen gewenst is, moeten gebruikers tablock-hint gebruiken tijdens het invoegen in een lokale tijdelijke tabel.
Als u Traceringsvlag 9495 hebt ingeschakeld die wordt vermeld in de sectie tijdelijke oplossing, wordt aanbevolen om de traceringsvlag uit te schakelen en te verwijderen na het toepassen van SQL Server 2016 SP1, omdat traceringsvlag 9495 parallelle invoegen uitschakelt, ongeacht de TABLOCK-hint.
Informatie over cumulatieve updates
Dit probleem is opgelost in de volgende cumulatieve update voor SQL Server 2016:
Over cumulatieve updates voor SQL Server