KB2887888 – KORJAUS: Hidas suorituskyky SQL Server:ssä, kun indeksi rakennetaan suuren taulukon paikkatietotyypille SQL Server 2012- tai SQL Server 2014 -esiintymässä

Käytetään kohteeseen
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)

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.