Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment générer un plan d'exécution dans SQL Server

Des plans d'exécution de requête SQL sont générés lorsqu'un optimiseur de requête détermine le moyen le plus efficace de fournir les données demandées par une requête. Ces plans sont une représentation des opérations de base de données qu'une requête exécute, montrant quels objets la requête utilise, les types d'utilisations et comment ils sont utilisés.

Il est de notoriété publique que les requêtes peu performantes sont un indicateur clé que quelque chose ne va pas dans une base de données. Ainsi, regarder "sous le capot" le plan d'exécution d'une requête est l'un des meilleurs moyens de déterminer la cause du problème de performances.

Les informations disponibles dans un plan d'exécution SQL sont inestimables pour les administrateurs de base de données qui résolvent les problèmes de performances des requêtes SQL Server, car elles leur permettent d'accéder à la cause première du problème et d'ajuster la requête selon les besoins.

L'examen des plans d'exécution SQL est l'une des premières étapes du réglage des performances, car le plan met clairement en évidence les sources de problèmes les plus probables dans une requête, y compris les opérateurs coûteux, un nombre inhabituel d'enregistrements circulant entre les opérateurs et des opérateurs supplémentaires.

Les administrateurs de base de données bénéficient également d'avertissements de plan d'exécution qui alertent les utilisateurs sur des problèmes tels que les débordements tempdb et les index manquants.

Types de plans d'exécution SQL

Il existe deux principaux types de plans d'exécution SQL :les plans d'exécution estimés et les plans d'estimation réels.

Les plans d'exécution estimés sont mieux décrits comme une sorte de prévision météorologique. Comme leur nom l'indique, les plans d'exécution estimés utilisent des calculs approximatifs, des statistiques et d'autres paramètres pour estimer les étapes qui peuvent être suivies par le moteur SQL Server pour exécuter la requête soumise après l'analyse de la requête.

Vous n'avez pas besoin d'exécuter la requête pour générer ce type de plan d'exécution, il convient donc aux requêtes complexes pour lesquelles la génération d'un plan d'exécution réel prendrait beaucoup de temps.

Les plans d'exécution réels exécutent la requête soumise, puis affichent les étapes qui se sont produites lors de l'exécution. Ce type de plan affiche des calculs réels et les étapes réelles (non estimées) suivies par le moteur SQL Server.

Étant donné que ce type de plan d'exécution exécute réellement la requête, il s'agit d'un bon choix pour résoudre les problèmes de performances des requêtes.

Comment générer un plan d'exécution SQL

Hackernoon fournit une description succincte de la manière de générer des plans d'exécution estimés et réels. Le processus peut se résumer aux étapes suivantes :

Générer un plan d'exécution estimé

  • Aller à la base de données
  • Sélectionnez la requête
  • Cliquez sur "Requête"
  • Cliquez sur "Afficher le plan d'exécution estimé" ou utilisez le raccourci Ctrl + L

Générer un plan d'exécution réel

  • Aller à la base de données
  • Sélectionnez la requête
  • Cliquez sur "Requête"
  • Cliquez sur "Inclure le plan d'exécution réel" ou utilisez le raccourci Ctrl + M

Vous trouverez une explication détaillée sur la façon de générer des plans d'exécution estimés et des plans d'exécution réels dans la documentation officielle de Microsoft.

Pourquoi les plans d'exécution SQL estimés et réels peuvent être différents

Généralement, les plans d'exécution estimés et réels seront similaires. Cependant, il y a des occasions où ils sont différents. Ceci est normal et se produit car les statistiques de la base de données et les données réelles sont différentes. Ces différences peuvent être introduites par plusieurs canaux :

Parallélisme

Le coût du plan peut entraîner la création de deux plans d'exécution pour une requête soumise. Le moteur SQL Server choisira d'utiliser ou non le plan parallèle, il est donc possible qu'un plan utilise le plan parallèle et l'autre utilise le plan en série.

Statistiques obsolètes

Lorsque vous insérez et supprimez des données dans des tables et des index ou que vous modifiez la table ou le schéma d'index, les statistiques changent. Si les statistiques ne sont pas mises à jour régulièrement, le plan d'exécution réel sera différent du plan d'exécution estimé.

Plan estimé non valide

Si une requête contient une instruction qui nécessite une table temporaire qui n'existe que si la requête est exécutée, la génération d'un plan d'exécution estimé créera une erreur car aucune requête n'a été exécutée. La même requête s'exécuterait correctement dans le plan d'exécution réel car la requête a été exécutée.

Les plans d'exécution SQL sont une ressource précieuse pour résoudre les problèmes de performances de SQL Server. Savoir comment générer des plans d'exécution SQL estimés et réels est un outil essentiel pour tout administrateur de base de données chargé de régler les requêtes pour des performances optimales.