Exploitation SQL Server

Query Store comme boîte noire des performances SQL Server

De nombreux incidents disparaissent avant la capture du plan. Query Store conserve l'historique des requêtes, plans, durées et attentes pour une analyse ultérieure.

Query Store comme boîte noire des performances SQL Server

De nombreux incidents disparaissent avant la capture du plan. Query Store conserve l'historique des requêtes, plans, durées et attentes pour une analyse ultérieure.

Pourquoi ce sujet exige une attention méthodique

Un problème de ce type existe rarement seul. Une modification qui améliore une requête peut augmenter les écritures, le journal, les blocages, la reprise ou la complexité ailleurs. Traitez le travail comme une décision d'ingénierie avec un objectif mesurable, des contraintes connues et un responsable.

Query Store transforme un signalement vague de lenteur en enquête limitée dans le temps et fondée sur des preuves.

Ce qu'il faut mesurer

Comparez durée, CPU, lectures logiques, exécutions, attentes et plans pendant la fenêtre exacte. Vérifiez si la régression suit un déploiement, une statistique modifiée ou un plan sensible aux paramètres.

Méthode de diagnostic

  • Définissez précisément symptôme, charge touchée, début, fréquence et impact visible.
  • Collectez des preuves pendant les périodes normales et dégradées pour la même opération métier.
  • Séparez corrélation et cause en examinant plans, attentes, ressources, blocages, configuration et changements récents.
  • Testez des groupes représentatifs de bases, requêtes ou paramètres, pas seulement le cas le plus simple.
  • Conservez réglage, plan, définition d'objet et compteurs actuels avant toute modification.
  • Exprimez numériquement le résultat attendu : latence, CPU, lectures logiques, débit, file ou temps de reprise.

Choisir l'intervention

Préférez le changement le plus limité qui traite la cause démontrée. Une configuration serveur touche de nombreuses charges, tandis qu'une modification de requête, index, statistique ou horaire peut être ciblée. Considérez licence, version SQL Server, haute disponibilité, fenêtres de maintenance et capacité de surveillance.

Approche pratique

Définissez taille et nettoyage. Conservez le plan régressé et le précédent. Utilisez un hint Query Store ou un plan forcé comme stabilisation contrôlée, avec surveillance et date de retrait.

Séquence de mise en œuvre sûre

  • Reproduisez le comportement dans un environnement sûr avec un volume proche de la production.
  • Modifiez une variable importante à la fois et conservez la définition d'origine pour le retour arrière.
  • Mesurez durée, CPU, lectures, écritures, attentes, mémoire, journal et effets en aval.
  • Testez entrées normales, pics et cas limites, ainsi que redémarrage ou basculement si nécessaire.
  • Déployez dans une fenêtre adaptée avec opérateur, propriétaire applicatif et décideur de retour arrière disponibles.
  • Évaluez immédiatement puis pendant le prochain pic représentatif de production.

Exemple SQL Server

L'exemple suivant sert de point de départ pour l'analyse ou une mise en œuvre contrôlée. Adaptez bases, seuils, rétention et autorisations avant la production. Conservez la sortie avec la chronologie de l'incident au lieu de considérer un seul échantillon comme un diagnostic complet.

SELECT TOP (20)
    q.query_id,
    p.plan_id,
    SUM(rs.count_executions) AS executions,
    SUM(rs.avg_duration * rs.count_executions) /
        NULLIF(SUM(rs.count_executions), 0) AS weighted_duration,
    SUM(rs.avg_logical_io_reads * rs.count_executions) AS logical_reads
FROM sys.query_store_query AS q
JOIN sys.query_store_plan AS p ON p.query_id = q.query_id
JOIN sys.query_store_runtime_stats AS rs ON rs.plan_id = p.plan_id
GROUP BY q.query_id, p.plan_id
ORDER BY weighted_duration DESC;

Ce qu'il faut éviter

Ne forcez pas le premier plan apparemment rapide. N'ignorez pas un Query Store en lecture seule et ne gardez pas indéfiniment un correctif d'urgence.

Surveillance après le changement

Surveillez la métrique visée et au moins deux effets secondaires possibles. Comparez des périodes et volumes équivalents. Observez assez longtemps pour inclure maintenance, sauvegardes, reporting, basculement et activités périodiques. Documentez si l'amélioration persiste et si le changement doit rester, évoluer ou disparaître.

Retour arrière et responsabilité

Le retour arrière doit préciser l'ancienne valeur ou définition, le décideur et le signal de déclenchement. Conservez le plan et le script d'origine pour les changements de plan ou métadonnées. Pour l'infrastructure, confirmez capacité et temps de maintenance avant de commencer.

Résultat opérationnel

Query Store transforme un signalement vague de lenteur en enquête limitée dans le temps et fondée sur des preuves.

Checklist de production

Établissez une référence et définissez l'amélioration attendue. Testez avec des données et une concurrence représentatives. Conservez la configuration ou le plan d'origine, préparez un retour arrière et surveillez le prochain pic normal de charge.

Questions avant de clôturer

  • Le symptôme initial s'est-il amélioré sous la même charge ?
  • De nouveaux coûts d'écriture, stockage, blocage, mémoire ou disponibilité sont-ils apparus ?
  • Le résultat survivra-t-il au redémarrage, basculement, statistiques et croissance ?
  • Les alertes détecteront-elles une régression avant les utilisateurs ?
  • La décision, le responsable et la date de révision sont-ils enregistrés ?

Pour appliquer cette méthode à un environnement SQL Server précis, utilisez le formulaire ci-dessous et indiquez la version, la taille de la base, le profil de charge et les éléments déjà collectés.

Question sur cet article

Vous avez une question sur ce sujet ?

Expliquez ce que vous évaluez ou le point qui vous bloque. Nous vous répondrons avec une recommandation pratique.

Inquiries are not enabled in this preview.

Poser une question sur cet article