Training
Leertraject
Queryprestaties optimaliseren in Azure SQL - Training
Queryprestaties optimaliseren in Azure SQL
Deze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Dit artikel helpt u bij het oplossen van problemen met betrekking tot queryprestaties wanneer de grootte toeneemt TokenAndPermUserStore
. Het biedt ook verschillende oorzaken en tijdelijke oplossingen.
Oorspronkelijk KB-nummer: 927396
In Microsoft SQL Server ondervindt u de volgende symptomen:
Het duurt langer voordat query's worden uitgevoerd die doorgaans snel worden uitgevoerd.
HET CPU-gebruik voor het SQL Server-proces is groter dan normaal.
U ondervindt verminderde prestaties wanneer u een ad-hocquery uitvoert. Als u echter query's uitvoert op de sys.dm_exec_requests
of sys.dm_os_waiting_tasks
dynamische beheerweergaven, geven de resultaten niet aan dat de ad-hocquery wacht op een resource.
De grootte van de TokenAndPermUserStore
cache groeit met een constante snelheid.
De grootte van de TokenAndPermUserStore
cache is enkele honderden megabytes (MB).
In sommige gevallen biedt het uitvoeren van de DBCC FREEPROCCACHE
of DBCC FREESYSTEMCACHE
opdracht tijdelijke verlichting.
Prestatieproblemen, zoals een hoog CPU-gebruik en een verhoogd geheugengebruik, kunnen worden veroorzaakt door overmatige vermeldingen in TokenAndPermUserStore
de cache. Standaard worden vermeldingen in deze cache alleen opgeschoond wanneer SQL Server interne geheugenbelasting aangeeft. Op servers met veel RAM-geheugen kan interne geheugendruk mogelijk niet vaak worden geactiveerd. Wanneer deze cache groeit, duurt het langer om te zoeken naar bestaande vermeldingen die opnieuw moeten worden gebruikt. Toegang tot deze cache wordt beheerd door een spinlock. Slechts één thread tegelijk kan de zoekopdracht uitvoeren. Dit gedrag zorgt er uiteindelijk voor dat queryprestaties afnemen en dat er meer CPU-gebruik plaatsvindt.
Als u de grootte van TokenAndPermUserStore
de cache wilt bewaken, kunt u een query gebruiken die lijkt op de volgende query:
SELECT SUM(pages_kb) AS
"CurrentSizeOfTokenCache(kb)"
FROM sys.dm_os_memory_clerks
WHERE name = 'TokenAndPermUserStore'
De TokenAndPermUserStore
cache onderhoudt de volgende typen beveiligingstokens:
TokenAndPermUserStore
TokenAndPermUserStore
Momenteel zijn dit ACRCacheStores
de enige soorten beveiligingscache die worden gebruikt. Zie toegangsbeheerserverconfiguratieopties voor meer informatie over ACR-cache.U kunt de volgende query uitvoeren om informatie over de verschillende caches en de bijbehorende afzonderlijke grootten op te halen:
SELECT type, name, pages_kb
FROM sys.dm_os_memory_clerks
WHERE type = 'USERSTORE_TOKENPERM'
U kunt de volgende query uitvoeren om de soorten tokens te identificeren die groeien in het TokenAndPermUserStore
volgende:
SELECT [name] AS "SOS StoreName",[TokenName],[Class],[SubClass], count(*) AS [Num Entries]
FROM
(SELECT name,
x.value('(//@name)[1]', 'varchar (100)') AS [TokenName],
x.value('(//@class)[1]', 'varchar (100)') AS [Class],
x.value('(//@subclass)[1]', 'varchar (100)') AS [SubClass]
FROM
(SELECT CAST (entry_data as xml),name
FROM sys.dm_os_memory_cache_entries
WHERE type = 'USERSTORE_TOKENPERM')
AS R(x,name)
) a
GROUP BY a.name,a.TokenName,a.Class,a.SubClass
ORDER BY [Num Entries] desc
SQL Server biedt twee traceringsvlagken die kunnen worden gebruikt om het quotum van het TokenAndPermUserStore
quotum te configureren (standaard is er geen quotum. Dit impliceert dat er een willekeurig aantal vermeldingen in deze cache kan zijn).
TokenAndPermUserStore
1024.TokenAndPermUserStore
8192.Als het zeer lage aantal vermeldingen van 4618 andere prestatieproblemen veroorzaakt, gebruikt u de traceflags 4610 en 4618 samen.
Traceervlagmen 4610 en 4618 worden beschreven in het onderwerp Books Online, DBCCC TRACEON - Trace Flags.
Deze traceringsvlagmen moeten worden gebruikt voor scenario's waarin de niet-gebonden groei TokenAndPermUserStore
te groot is voor de server. Dit gebeurt meestal in twee soorten omgevingen:
Low-end- of medium-endhardware waarvoor TokenAndPermUserStore
een grote hoeveelheid beschikbaar geheugen voor de server in beslag neemt en waarvoor de snelheid van het maken van nieuwe invoer sneller of zo snel is als de snelheid van verwijdering van de cache. Dit kan leiden tot geheugenconflicten en vaker ongeldige cache voor andere onderdelen van de server (bijvoorbeeld proc-cache).
High-end computers met veel geheugen (bijvoorbeeld verschillende recente ondersteuningscases hebben meer dan 1 TB RAM-geheugen nodig). In deze omgevingen kan de cacheopslag groot worden voordat er geheugendruk op wordt uitgeoefend. Dit kan leiden tot prestatievermindering van lange bucketketens of wandelingen.
Als tijdelijke oplossing kunt u deze cache periodiek wissen met behulp van de volgende methode:
TokenAndPermUserStore
cache leegmaken.Opmerkingen:
Voer hiervoor de volgende opdracht uit:
DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')
Bekijk de drempelwaarde van de TokenAndPermUserStore
cachegrootte wanneer er problemen worden weergegeven.
Maak een geplande SQL Server Agent-taak die de volgende acties uitvoert:
Controleer de grootte van de TokenAndPermUserStore
cache. Voer de volgende opdracht uit om de grootte te controleren:
SELECT SUM(pages_kb) AS
"CurrentSizeOfTokenCache(kb)"
FROM sys.dm_os_memory_clerks
WHERE name = 'TokenAndPermUserStore'
Als de cache groter is dan de waargenomen drempelwaarde, voert u de volgende opdracht uit:
DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')
Training
Leertraject
Queryprestaties optimaliseren in Azure SQL - Training
Queryprestaties optimaliseren in Azure SQL
Documentatie
Problemen met hoog CPU-gebruik in SQL Server oplossen - SQL Server
Dit artikel bevat een procedure waarmee u problemen met hoog CPU-gebruik kunt oplossen op een server waarop SQL Server wordt uitgevoerd.
DBCC MEMORYSTATUS gebruiken om het geheugengebruik te bewaken - SQL Server
In dit artikel wordt beschreven hoe u de OPDRACHT DBCC MEMORYSTATUS gebruikt om het geheugengebruik te bewaken.
Biedt stappen voor probleemoplossing voor het identificeren en verminderen van geheugentoe kennen geheugenverbruik in SQL Server.
Problemen met onvoldoende geheugen of weinig geheugen in SQL Server oplossen - SQL Server
Biedt stappen voor probleemoplossing voor het oplossen van problemen met onvoldoende geheugen of onvoldoende geheugen in SQL Server.