Microsoft SQL Server
Magasin de requêtes
Recherche…
Activer le magasin de requêtes sur la base de données
Le magasin de requêtes peut être activé sur la base de données à l'aide de la commande suivante:
ALTER DATABASE tpch SET QUERY_STORE = ON
SQL Server / Azure SQL Database collectera des informations sur les requêtes exécutées et fournira des informations dans les vues sys.query_store:
- sys.query_store_query
- sys.query_store_query_text
- sys.query_store_plan
- sys.query_store_runtime_stats
- sys.query_store_runtime_stats_interval
- sys.database_query_store_options
- sys.query_context_settings
Obtenir des statistiques d'exécution pour les requêtes / plans SQL
La requête suivante renverra des informations sur les séries, leurs plans et les statistiques moyennes concernant leur durée, le temps processeur, les lectures physiques et logiques.
SELECT Txt.query_text_id, Txt.query_sql_text, Pl.plan_id,
avg_duration, avg_cpu_time,
avg_physical_io_reads, avg_logical_io_reads
FROM sys.query_store_plan AS Pl
JOIN sys.query_store_query AS Qry
ON Pl.query_id = Qry.query_id
JOIN sys.query_store_query_text AS Txt
ON Qry.query_text_id = Txt.query_text_id
JOIN sys.query_store_runtime_stats Stats
ON Pl.plan_id = Stats.plan_id
Supprimer des données du magasin de requêtes
Si vous souhaitez supprimer un plan de requête ou de requête du magasin de requêtes, vous pouvez utiliser les commandes suivantes:
EXEC sp_query_store_remove_query 4;
EXEC sp_query_store_remove_plan 3;
Les paramètres de ces procédures stockées sont un identifiant de requête / plan extrait des vues système.
Vous pouvez également supprimer les statistiques d'exécution d'un plan particulier sans supprimer le plan du magasin:
EXEC sp_query_store_reset_exec_stats 3;
Paramètre fourni à cet identifiant de plan de procédure.
Plan de forçage pour la requête
L'optimiseur de requêtes SQL choisira le plan possible qu'il pourra trouver pour certaines requêtes. Si vous trouvez un plan qui fonctionne de manière optimale pour certaines requêtes, vous pouvez forcer QO à toujours utiliser ce plan à l'aide de la procédure stockée suivante:
EXEC sp_query_store_unforce_plan @query_id, @plan_id
A partir de là, QO utilisera toujours le plan fourni pour la requête.
Si vous souhaitez supprimer cette liaison, vous pouvez utiliser la procédure stockée suivante:
EXEC sp_query_store_force_plan @query_id, @plan_id
À partir de ce moment, QO tentera à nouveau de trouver le meilleur plan.