KB3180087 – Gyenge teljesítmény az INSERT futtatásakor. SELECT műveletek a Windows rendszeren futó SQL Server 2016 vagy SQL Server 2017 rendszerben

Hatókör
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use)

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