Jelenségek
Windows rendszeren a Microsoft SQL Server 2016-ban vagy SQL Server 2017-ben a következő feltételek mellett csökkenhet a teljesítmény:
-
Ha több egyidejű INSERTSELECT műveletet futtat ideiglenes táblákban.
-
Sys.dm_os_waiting_tasks lekérdezésekor. Ebben az esetben a resource_description oszlop több kérelemre vonatkozó várakozásokat jelenít meg a pfs-lapokon.
A probléma oka
Az INSERTSELECT műveletek INSERT párhuzamosságát a Windows SQL Server 2016-ban vagy SQL Server 2017-ben vezettük be. A helyi ideiglenes táblákba irányuló INSERT-ek (csak a # előtag által azonosítottak, és a ## előtagok által azonosított globális ideiglenes táblák nem) mostantól automatikusan engedélyezve vannak a párhuzamossághoz anélkül, hogy meg kellene jelölniük a TABLOCK-tippet, amelyet a nem ideiglenes táblák igényelnek.
Bár az INSERT párhuzamosság általában javítja a lekérdezési teljesítményt, ha jelentős számú egyidejű ideiglenes tábla INSERTSELECT művelet van, a PFS-oldalak esetében jelentős versengés lehet. Bizonyos esetekben ez a teljesítmény általános csökkenését okozhatja.
Megoldás
A probléma először a SQL Server 2016 Service Pack 1 szervizcsomagbanjavítva van. A SQL Server 2016 SP1 alkalmazása után az INSERT-ben párhuzamos INSERT-k. A SELECT to local temporary tables alapértelmezés szerint le van tiltva, ami csökkenti a PFS oldalon való versengést, és javítja az egyidejű számítási feladatok általános teljesítményét. Ha a helyi ideiglenes táblákba párhuzamos INSERT-kre van szükség, a felhasználóknak a TABLOCK-tippet kell használniuk a helyi ideiglenes táblába való beszúráskor.
Ha engedélyezte az áthidaló megoldás szakaszban említett 9495-ös nyomkövetési jelzőt, javasoljuk, hogy tiltsa le és távolítsa el a nyomkövetési jelzőt, miután alkalmazta SQL Server 2016 SP1-et, mivel a 9495-ös nyomkövetési jelző letiltja a párhuzamos beszúrást a TABLOCK tipptől függetlenül.
Kumulatív frissítési információk
Ezt a hibát a 2016- SQL Server következő összegző frissítésében javítottuk:
Tudnivalók a SQL Server kumulatív frissítéseiről