KB2887888 – PATAISA: lėtas „SQL Server“ veikimas, kai sukuriate indeksą pagal didelės lentelės erdvinių duomenų tipą "„SQL Server“ 2012" arba "„SQL Server“ 2014" egzemplioriuje

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

Požymiai

Kai bandote sukurti indeksą (naudodami CREATE INDEX arba ALTER INDEX) didelės lentelės erdvinių duomenų tipui "Microsoft „SQL Server“ 2012" arba "„SQL Server“ 2014", CMEMTHREAD laukimo tipas yra didelis, o „SQL Server“ našumas sumažėja.

Sprendimas

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

1 kaupiamasis naujinimas, skirtas „SQL Server“ 2014 /en-us/help/2931693

7 kaupiamasis naujinimas, skirtas „SQL Server“ 2012 SP1 /en-us/help/2894115

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:

      

Karštųjų pataisų naujinimo paketo informacija Palaikomas karštąsias pataisas galima gauti iš "„Microsoft“". Tačiau ši karštoji pataisa skirta ištaisyti tik šiame straipsnyje aprašytą problemą. Taikykite šią karštąją pataisą tik toms sistemoms, kurios susiduria su šia problema.

Jei karštąją pataisą galima atsisiųsti, šio žinių bazės straipsnio viršuje yra skyrius "Karštosios pataisos atsisiuntimas". Jei šis skyrius nerodomas, pateikite užklausą "Microsoft" klientų aptarnavimo ir palaikymo tarnybai, kad gautumėte karštąją pataisą.

Pastaba. Kilus papildomų problemų arba prireikus trikčių diagnostikos, gali tekti sukurti atskirą paslaugos užklausą. Įprastos palaikymo išlaidos bus taikomos papildomiems palaikymo klausimams ir problemoms, kurios neatitinka šios konkrečios karštosios pataisos reikalavimų. Norėdami gauti visą "„Microsoft“" klientų aptarnavimo ir palaikymo tarnybos telefonų numerių sąrašą arba sukurti atskirą aptarnavimo užklausą, apsilankykite šioje "„Microsoft“" svetainėje:

/contactus/?ws=support Pastaba: Formoje "Karštųjų pataisų atsisiuntimas yra" rodomos kalbos, kurioms galima naudoti karštąją pataisą. Jei nematote savo kalbos, vadinasi, nėra tos kalbos karštųjų pataisų.

Daugiau informacijos

CMEMTHREAD laukimo tipas nurodo vidinių, gijų saugių atminties objektų laukimą. Didesnis užklausų lygiagretumas gali sukelti laukimą, dėl kurio sumažėja erdvinės veiklos našumas.

Ši pataisa skaido CMEMTHREAD, kuri susieja su "erdvinės atminties objektu", naudojant NUMA mazgo skaidymą. Tai sumažina darbuotojo veiklos sutapimą iki viename mazge aktyvių planuotojų skaičiaus. Sistemose, kuriose yra didesnis planuoklių lygis vienam mazgui, sekimo vėliavėlė –T8048 gali būti naudojama tolesniam visų atminties objektų, leidžiančių skaidyti pagal planuoklį, skaidymą. Sekimo vėliavėlę naudokite atsargiai, nes ji suteikia mažai atminties visiems NUMA mazgų skaidytiems atminties objektams.

Pastaba: erdvinės atminties objektas sukuriamas, kai SqlServerSpatial110.dll įkeliamas į „SQL Server“ proceso adresų sritį. Daugeliu atvejų tam reikia iš naujo paleisti „SQL Server“ procesą, kad būtų galima pritaikyti pėdsakų vėliavėlės efektus.

CMEMTHREAD laukimo tipas padidinamas bet kuriam gijos saugios atminties objektui, ne tik erdviniam objektui. Toliau pateiktas "XEvent" seanso apibrėžimas ir viešųjų simbolių naudojimas gali būti naudojami konkrečiai kodo eilutei, kuri generuoja CMEMTHREAD laukimus, identifikuoti:SUKURTI ĮVYKIO SEANSĄ wait_stacks
SERVERYJE
ĮVYKIO sqlos.wait_info ĮTRAUKIMAS
(
      Action(Package0.callstack)
      WHERE OPCODE = 1 -- Laukti baigta
            ir wait_type = 191 -- CMEMTHREAD
)
pridėti tikslinį package0.asynchronous_bucketizer (SET source_type = 1, source = 'package0.callstack'),
įtraukti paskirties package0.ring_buffer (SET max_memory = 4096)
Su (MAX_DISPATCH_LATENCY = 1 SEK.)
Vykdyti
Alter event session wait_stacks on server state = start
grįžti

Paleiskite repro

select event_session_address, target_name, execution_count, cast (target_data kaip XML)
nuo XST sys.dm_xe_session_targets
      Inner Connect sys.dm_xe_sessions xs on (xst.event_session_address = xs.address)
kur xs.name = 'wait_stacks'
grįžti

Būsena

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