De evolutie van een database administrator. Er komt een melding binnen: “Eén van de query’s is erg langzaam”.
- “We herstarten de machine”
- “We herstarten de SQL Server instance”
- “We herindexeren alle tabellen”
- “Laten we DBCC FREEPROCCACHE gebruiken”
- “Ja, laten we DBCC FREEPROCCACHE met beleid gebruiken”
Wacht! De functie DBCC FREEPROCCACHE met beleid gebruiken? Hoe dan?
Elke query die in de cache is opgeslagen, krijgt een unieke ‘identifier’. Die identifier wordt met de volgende query gevonden:
SELECT
cacheobjtype,
text,
plan_handle
FROM sys.dm_exec_cached_plans P
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE text NOT LIKE '%sys.dm_%'
De kolom text geeft de query terug en de kolom plan_handle geeft de unieke identifier terug. Met die identifier kan vervolgens alleen dat query plan uit de cache worden verwijderd met het commando:
DBCC FREEPROCCACHE (plan_handle)
Dus vanaf vandaag worden alleen nog maar slechte query plannen via de functie DBCC FREEPROCCACHE verwijderd.