Symptomen
Wanneer u probeert een index te maken (met behulp van CREATE INDEX of ALTER INDEX) voor een ruimtelijk gegevenstype van een grote tabel in Microsoft SQL Server 2012 of SQL Server 2014, is de kans groot op het wachttype CMEMTHREAD en nemen de prestaties van SQL Server af.
Oplossing
Het probleem werd voor het eerst opgelost in de volgende cumulatieve update van SQL Server.
Cumulatieve update 1 voor SQL Server 2014 /nl-nl/help/2931693
Cumulatieve update 7 voor SQL Server 2012 SP1 /nl-nl/help/2894115
Informatie over cumulatieve updates voor SQL Server
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:
- Meest recente cumulatieve update voor SQL Server 2014
- Laatste cumulatieve update voor SQL Server 2012 SP1
Informatie over hotfix-updatepakket Er is een ondersteunde hotfix beschikbaar van Microsoft. Deze hotfix is echter alleen bedoeld om het probleem op te lossen dat in dit artikel wordt beschreven. Pas deze hotfix alleen toe op systemen waarop dit specifieke probleem zich voordoet.
Als de hotfix kan worden gedownload, vindt u bovenaan dit Knowledge Base-artikel de sectie Hotfix-download beschikbaar. Als deze sectie niet wordt weergegeven, dien dan een aanvraag in bij de klantenservice en ondersteuning van Microsoft om de hotfix te verkrijgen.
Opmerking: Als er nog meer problemen optreden of als er probleemoplossing nodig is, moet u mogelijk een afzonderlijke serviceaanvraag maken. De gebruikelijke ondersteuningskosten zijn van toepassing op aanvullende ondersteuningsvragen en problemen die niet in aanmerking komen voor deze specifieke hotfix. Voor een volledige lijst met telefoonnummers van de klantenservice en ondersteuning van Microsoft of om een afzonderlijke serviceaanvraag te maken, gaat u naar de volgende Microsoft-website:
http://support.microsoft.com/contactus/?ws=support Opmerking: Het formulier 'Hotfixdownload beschikbaar' geeft de talen weer waarvoor de hotfix beschikbaar is. Als je je taal niet ziet, komt dit doordat er geen hotfix beschikbaar is voor die taal.
Meer informatie
Het type CMEMTHREAD-wait geeft de wachttijd voor de interne, thread-veilige geheugenobjecten aan. Hogere niveaus van query-parallellisme kunnen het wachten activeren, wat leidt tot verminderde prestaties van de ruimtelijke activiteit.
Hiermee wordt de CMEMTHREAD die is gekoppeld aan het 'Ruimtelijk geheugenobject' hersteld met behulp van NUMA-knooppuntpartitie. Hierdoor wordt de gelijktijdigheid van werkactiviteiten beperkt tot het aantal planners dat actief is op één knooppunt. Voor systemen met hogere niveaus van schedulers per knooppunt kan trace flag –T8048 worden gebruikt voor het verder partitioneren van alle geheugenobjecten die partitionering door scheduler mogelijk maken. Gebruik de traceringsvlag zorgvuldig omdat hierdoor een kleine hoeveelheid geheugenoverhead wordt veroorzaakt voor alle geheugenobjecten die zijn gepartitioneerd met een NUMA-knooppunt.
Opmerking Het ruimtelijk geheugenobject wordt gemaakt wanneer het SqlServerSpatial110.dll in de adresruimte van het SQL Server proces wordt geladen. In de meeste gevallen vereist dit een herstart van het SQL Server-proces om de effecten van de trace flag toe te passen.
Het wachttype CMEMTHREAD wordt verhoogd voor alle threadobjecten die wachten met veilig geheugen, niet alleen voor het ruimtelijke object. De volgende XEvent-sessiedefinitie en het gebruik van openbare symbolen kunnen worden gebruikt om de specifieke coderegel te identificeren die CMEMTHREAD-wachttijden genereert:CREATE EVENT SESSION wait_stacks
OP SERVER
GEBEURTENIS TOEVOEGEN sqlos.wait_info
(
action(package0.callstack)
waarbij opcode = 1 -- wait completed
en wait_type = 191 -- CMEMTHREAD
)
add target package0.asynchronous_bucketizer (SET source_type = 1, source = 'package0.callstack'),
Doel package0.ring_buffer toevoegen (SET max_memory = 4096)
Door (MAX_DISPATCH_LATENCY = 1 SECONDEN)
Start
Alter event session wait_stacks on server state = start
ga
De repro uitvoeren
selecteren event_session_address, target_name, execution_count, casten (target_data als XML)
vanaf sys.dm_xe_session_targets xst
inner join sys.dm_xe_sessions xs on (xst.event_session_address = xs.address)
waarbij xs.name = 'wait_stacks'
ga
Status
Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in het gedeelte 'Van toepassing op'.