Symptomer
Når du forsøger at opbygge et indeks (ved hjælp af CREATE INDEX eller ALTER INDEX) på en afstandsdatatype for en stor tabel i Microsoft SQL Server 2012 eller SQL Server 2014, er striden høj på CMEMTHREAD-ventetypen, og ydeevnen af SQL Server falder.
Løsning
Problemet blev først løst i følgende kumulative opdatering af SQL Server.
Samlet opdatering 1 til SQL Server 2014 /en-us/help/2931693
Samlet opdatering 7 til SQL Server 2012 SP1 /en-us/help/2894115
Om kumulative opdateringer til SQL Server
Hver ny kumulativ opdatering til SQL Server indeholder alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den forrige kumulative opdatering. Se de seneste kumulative opdateringer til SQL Server:
- Seneste kumulative opdatering til SQL Server 2014
- Seneste kumulative opdatering til SQL Server 2012 SP1
Oplysninger om hotfixopdateringspakke Der findes et understøttet hotfix fra Microsoft. Denne hotfix er dog kun beregnet til at løse det problem, der er beskrevet i denne artikel. Anvend kun dette hotfix på systemer, der har dette specifikke problem.
Hvis hotfixet kan downloades, er der afsnittet "Hotfix download available" øverst i denne Knowledge Base-artikel. Hvis dette afsnit ikke vises, skal du sende en anmodning til Microsofts kundeservice og support for at få hotfixet.
Bemærk, at hvis der opstår flere problemer, eller hvis der kræves fejlfinding, kan det være nødvendigt at oprette en separat serviceanmodning. De sædvanlige supportomkostninger gælder for yderligere supportspørgsmål og -problemer, der ikke falder ind under dette specifikke hotfix. Du kan se en komplet liste over telefonnumre til Microsofts kundeservice og support eller oprette en separat serviceanmodning på følgende Microsoft-websted:
/contactus/?ws=support Bemærk at formularen "Hotfix download tilgængelig" viser de sprog, hotfixet er tilgængeligt for. Hvis du ikke kan se dit sprog, skyldes det, at der ikke findes et hotfix for det pågældende sprog.
Flere oplysninger
En CMEMTHREAD-ventetype angiver ventetiden på de interne, trådsikre hukommelsesobjekter. Højere niveauer af forespørgselsparallelitet kan udløse ventetid, der fører til nedsat ydeevne for den rumlige aktivitet.
Denne rettelse partitionerer den CMEMTHREAD, der er knyttet til "Spatial Memory Object" ved hjælp af NUMA-nodepartitionering. Dette reducerer samtidigheden af arbejderaktiviteten til antallet af planlæggere, der er aktive på en enkelt node. For systemer med højere niveauer af planlæggere pr. node kan sporingsflag –T8048 bruges til yderligere at partitionere alle hukommelsesobjekter, der tillader partitionering med planlægger. Brug sporingsflaget med forsigtighed, da det introducerer en lille mængde hukommelsesomkostninger til alle NUMA-nodepartitionerede hukommelsesobjekter.
Bemærk! Objektet Rumlig hukommelse oprettes, når SqlServerSpatial110.dll indlæses i det SQL Server procesadresseområde. I de fleste tilfælde kræver dette en genstart af SQL Server-processen for at anvende sporingsflageffekterne.
CMEMTHREAD-ventetypen øges for alle ventetider på trådsikre hukommelsesobjekter, ikke kun for det fysiske objekt. Følgende definition af XEvent-session og brug af offentlige symboler kan bruges til at identificere den specifikke kodelinje, der genererer CMEMTHREAD waits:CREATE EVENT SESSION wait_stacks
PÅ SERVER
TILFØJ BEGIVENHED sqlos.wait_info
(
action(package0.callstack)
where opcode = 1 -- wait fuldført
og wait_type = 191 – CMEMTRÅD
)
add target package0.asynchronous_bucketizer (SET source_type = 1, source = 'package0.callstack'),
tilføj mål package0.ring_buffer (SET max_memory = 4096)
Med (MAX_DISPATCH_LATENCY = 1 SEKUNDER)
Udfør
ALTER EVENT Session wait_stacks on server state = start
gå
Kør genskabelsen
vælg event_session_address, target_name, execution_count, cast (target_data som XML)
Fra sys.dm_xe_session_targets XST
Indre joinforbindelse sys.dm_xe_sessions xs til (xst.event_session_address = xs.adresse)
hvor xs.name = 'wait_stacks'
gå
Status
Microsoft har bekræftet, at dette er et problem i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".