Tünetek
A Windowson futó Microsoft SQL Server 2016-ban vagy SQL Server 2017-ben az alábbi feltételek mellett csökkenhet a teljesítmény:
- Ha több egyidejű INSERTSELECT műveletet futtat ideiglenes táblákban.
- Amikor lekérdezést végez sys.dm_os_waiting_tasks. Ebben az esetben a resource_description oszlop több kérelemre vonatkozóan a Lap szabad terület (PFS) lapokon várakozási időket jelenít meg.
Ok
Az INSERTSELECT műveletek INSERT párhuzamossága a Windows rendszeren futó SQL Server 2016-ban és SQL Server 2017-ben jelent meg. A helyi ideiglenes táblákba történő INSERT-ek (csak a # előtaggal azonosítottak, a ## előtaggal jelölt globális ideiglenes táblák nem) automatikusan párhuzamosak anélkül, hogy ki kellene jelölni a nem ideiglenes táblákhoz szükséges TABLOCK tippet.
Bár az INSERT párhuzamosság általában javítja a lekérdezés teljesítményét, jelentős versengés tapasztalható a PFS-lapokkal szemben, ha jelentős számú ideiglenes tábla INSERTSELECT művelet létezik. Egyes esetekben ez a teljesítmény általános csökkenésével járhat.
Megoldás
A probléma javítását először az SQL Server 2016 Service Pack 1 szervizcsomag tartalmazza. Az SQL Server 2016 SP1 alkalmazása után a Parallel INSERT-beszúrások az INSERT.. A SELECT to local temporary tables alapértelmezés alapértelmezés szerint le van tiltva, ami csökkenti a PFS lapon a versengést, és javítja az egyidejű számítási feladatok általános teljesítményét. Ha párhuzamos INSERT-eket szeretne létrehozni a helyi ideiglenes táblákba, a felhasználóknak a TABLOCK tippet kell használniuk a helyi ideiglenes táblába történő beszúráskor.
Ha engedélyezte a kerülő megoldás című szakaszban említett 9495-ös jelölőt, javasoljuk, hogy tiltsa le és távolítsa el a nyomkövetési jelzőt az SQL Server 2016 SP1 nyomkövetési jelzőként való alkalmazása után A 9495 letiltja a párhuzamos beszúrást a TABLOCK tipptől függetlenül.
Összegző frissítéssel kapcsolatos információk
A hiba javítását az SQL Server 2016 következő összegző frissítése tartalmazza:
Az SQL Server összegző frissítéseinek ismertetése