Ongelman ilmenemistapa
Kun yrität luoda indeksiä (käyttämällä CREATE INDEX- tai ALTER INDEX -funktiota) suuren taulukon paikkatietotyyppiin Microsoft SQL Server 2012:ssa tai SQL Server 2014:ssä, CMEMTHREAD-odotustyypistä aiheutuvat kiistat ovat suuria ja SQL Server:n suorituskyky heikkenee.
Ratkaisu
Ongelma korjattiin ensimmäisen kerran seuraavassa SQL Server kumulatiivisessa päivityksessä.
SQL Server 2014:n kumulatiivinen päivitys 1 /en-us/help/2931693
SQL Server 2012 SP1:n kumulatiivinen päivitys 7 /en-us/help/2894115
Tietoja SQL Serverin kumulatiivisista päivityksistä
Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:
Hotfix-korjauksen päivityspaketin tiedot Tuettu hotfix-korjaus on saatavana Microsoftilta. Tämä hotfix-korjaus on kuitenkin tarkoitettu vain tässä artikkelissa kuvatun ongelman korjaamiseen. Käytä tämä hotfix-korjaus vain järjestelmissä, joissa on kyseinen ongelma.
Jos hotfix-korjaus on ladattavissa, Hotfix-korjauksen lataaminen saatavilla -osio on tämän tietokannan artikkelin yläosassa. Jos tätä osaa ei näy, lähetä Microsoftin asiakaspalveluun ja tukeen pyyntö hotfix-korjauksen hankkimiseksi.
Huomautus: Jos muita ongelmia ilmenee tai jos vianmääritystä tarvitaan, sinun on ehkä luotava erillinen palvelupyyntö. Tavalliset tukikustannukset veloitetaan lisäkysymyksistä ja ongelmista, jotka eivät liity tähän nimenomaiseen hotfix-korjaukseen. Täydellinen luettelo Microsoftin asiakaspalvelun ja tuen puhelinnumeroista tai erillisen huoltopyynnön luominen on seuraavassa Microsoftin verkkosivustossa:
/contactus/?ws=support Huomautus Hotfix-korjauksen lataaminen saatavilla -lomakkeessa näkyvät kielet, joilla hotfix-korjaus on saatavilla. Jos kieltä ei näy, sille ei ole saatavilla hotfix-korjausta.
Lisätietoja
CMEMTHREAD-odotustyyppi ilmaisee odotuksen sisäisissä, säieturvallisissa muistiobjekteissa. Kyselyjen suurempi rinnakkaisuus voi laukaista odotuksen, joka voi johtaa tilatoiminnon suorituskyvyn heikkenemiseen.
Tämä korjaus osioi CMEMTHREADin, joka liittyy tilamuistiobjektiin NUMA-solmun osioinnin avulla. Tämä vähentää työntekijän toimintojen samanaikaisuutta yhdessä solmussa aktiivisten ajoittajien määrään. Järjestelmissä, joissa on enemmän aikatauluja solmua kohti, trace-merkintää –T8048 voidaan käyttää kaikkien sellaisten muistiobjektien osiointiin, jotka sallivat osioinnin ajoituksen mukaan. Käytä jäljitysmerkintää harkiten, sillä se aiheuttaa pienen määrän muistia kaikille NUMA-solmujen osioimille muistiobjekteille.
Huomautus: Tilamuistiobjekti luodaan, kun SqlServerSpatial110.dll ladataan SQL Server prosessin osoitetilaan. Useimmissa tapauksissa tämä edellyttää SQL Server -prosessin käynnistämistä uudelleen, jotta jäljitysmerkinnän tehosteita voidaan käyttää.
CMEMTHREAD-odotustyyppiä kasvatetaan mille tahansa säikeen turvallisen muistikohteen odotustilalle, ei vain tilakohteelle. Seuraavaa XEvent-istunnon määritelmää ja julkisten symbolien käyttöä voidaan käyttää tunnistamaan tietty koodirivi, joka luo CMEMTHREAD-odotuksia:CREATE EVENT SESSION wait_stacks
PALVELIMESSA
TAPAHTUMAN sqlos.wait_info LISÄÄMINEN
(
action(package0.callstack)
jossa OPCODE = 1 -- Odota valmis
and wait_type = 191 -- CMEMTHREAD
)
add target package0.asynchronous_bucketizer (SET source_type = 1, source = 'package0.callstack'),
kohteen package0.ring_buffer lisääminen (SET max_memory = 4096)
Kanssa: (MAX_DISPATCH_LATENCY = 1 SEKUNTI)
Siirry
Muuta tapahtumaistuntoa wait_stacks palvelimen tilassa = start
siirry
Suorita repro
valitse event_session_address, target_name, execution_count, cast (target_data XML-muodossa)
sys.dm_xe_session_targets xst:stä
INNER JOIN sys.dm_xe_sessions XS ON (xst.event_session_address = XS.ADDRESS)
jossa xs.name = 'wait_stacks'
siirry
Tila
Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.