KB3005300 – PATAISYMAS: didelis CPU suvartojimas, kai naudojate erdvinių duomenų tipą ir susijusius metodus „SQL Server“ 2012 arba „SQL Server“ 2014"

Taikoma
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Požymiai

Kai naudojate erdvinių duomenų tipą ir susijusius metodus "„Microsoft“ „SQL Server“ 2012" arba "„Microsoft“ SQL Sever 2014", "„SQL Server“ Operating System" (SQLOS) planuoklio kvantiniai taikiniai yra apsaugoti „SQL Server“ CLR prieglobos sluoksniu. Ši apsauga apima prevencinius, SQLOS jungikliai gali padidinti procesoriaus sąnaudas. Prevencinio perjungimo priežastis yra apsaugoti SQLOS planuoklį. Iškvietimas į „SQL Server“ CLR pagrįstą diegimą gali užtrukti nenustatytą laiką, nepasiduodant SQLOS planuoklei ir nekeičiant elgesio ir sutapimo modelių. Todėl erdvinių duomenų tipas sukurtas taip, kad kiekvieno iškvietimo metu perjungtų prevenciją.

Pastaba Erdvinių duomenų tipas yra pagrįstas „SQL Server“ CLR, jis gali susidurti su įvairiais .NET atminties sunaudojimo lygiais ir gijų perjungimo veikimu.

Priežastis

Erdvinių duomenų tipo metodų vykdymas paprastai yra submilisekundės ir gali nereikalauti visos SQL OS planuoklės ir prevencinės apsaugos. Perėjimo į prevencinį režimą ir iš jo pridėtinės išlaidos gali būti daug didesnės nei paties erdvinio metodo vykdymas.

Sprendimas

Šioje pataisoje pristatoma sekimo vėliavėlė 6531, nurodanti SQLOS išteklių nuomos sluoksniui, kad erdvinių duomenų tipas turėtų vengti prevencinių apsaugų. Tai gali sumažinti procesoriaus suvartojimą ir pagerinti bendrą erdvinės veiklos našumą. Šią sekimo vėliavėlę naudokite tik tuo atveju, jei atskiro erdvinio metodo iškvietimai (eilutėje ir stulpelyje) trunka mažiau nei ~4 ms. Ilgesni iškvietimai be prevencinės apsaugos gali sukelti planuoklės sutapimo problemų ir SQLCLR baudžiamuosius pranešimus, registruojamus klaidų žurnale.

Problema pirmą kartą buvo išspręsta šiame kaupiamajame „SQL Server“ naujinime.

4 kaupiamasis naujinimas, skirtas „SQL Server“ 2012 SP2 /en-us/help/3007556

5 kaupiamasis naujinimas, skirtas „SQL Server“ 2014 /en-us/help/3011055

13 kaupiamasis naujinimas, skirtas „SQL Server“ 2012 SP1 /en-us/help/3002044

Apie kaupiamuosius „SQL Server“ naujinimus

Kiekviename naujame „SQL Server“ kaupiamajame naujinime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Peržiūrėkite naujausius "„SQL Server“" kaupiamuosius naujinimus:

      

Būsena

„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.