Query Store est une fonctionnalité puissante dans SQL Server qui vous permet de surveiller et d’analyser les performances des requêtes. L’une des fonctionnalités clés de Query Store est la capacité à forcer les plans de requête. Mais pourquoi est-il important de vérifier les plans forcés ? Dans cet article, nous nous concentrerons sur la deuxième raison – les échecs de Query Store lors de la force des plans.
Les échecs de Query Store se produisent lorsque Query Store est incapable de forcer le plan qu’il est censé utiliser. Par exemple, supposons que vous ayez configuré Query Store pour forcer l’index “NCIX_dt_present” pour une requête particulière. Si vous supprimez l’index, Query Store fera ce qui suit :
- Ignorer le plan à forcer et choisir le plan de requête suivant le mieux choisi par l’optimiseur.
- Marquer l’échec de la force du plan dans les métadonnées de Query Store.
Alors, comment pouvez-vous identifier ces échecs de Query Store ? Une façon est d’interroger les vues système dans SQL Server. Voici une requête exemple qui récupère des informations sur les échecs de Query Store :
SELECT qt.query_sql_text, q.query_id, CAST(query_plan AS XML) AS 'Plan d'exécution', qp.force_failure_count, qp.last_force_failure_reason_desc, rs.first_execution_time, rs.last_execution_time, rs.count_executions, rs.avg_duration, rs.avg_rowcount, rs.last_logical_io_reads, rs.avg_cpu_time, rs.avg_query_max_used_memory
FROM sys.query_store_plan qp
INNER JOIN sys.query_store_query q ON qp.query_id = q.query_id
INNER JOIN sys.query_store_query_text qt ON q.query_text_id = qt.query_text_id
INNER JOIN sys.query_store_runtime_stats rs ON qp.plan_id = rs.plan_id
WHERE qp.is_forced_plan = 1
AND qp.force_failure_count > 0
ORDER BY rs.last_execution_time
Cette requête vous fournira une liste des échecs de Query Store, y compris le texte de la requête, le plan d’exécution, le nombre d’échecs, la raison de l’échec et d’autres statistiques pertinentes.
Il est fortement recommandé de suivre les échecs de Query Store et les plans forcés pour éviter des résultats de performance inattendus. En surveillant et en analysant ces échecs, vous pouvez vous assurer que vos requêtes s’exécutent de manière optimale et prendre les mesures appropriées si nécessaire.
En conclusion, comprendre les échecs de Query Store lors de la force des plans est crucial pour maintenir les performances de votre base de données SQL Server. En étant conscient de ces échecs et en prenant des mesures correctives, vous pouvez vous assurer que vos requêtes fournissent constamment les performances souhaitées.