8
votes

Quels sont les plans d'exécution SQL et comment peuvent-ils m'aider?

J'ai beaucoup entendu ces derniers temps que je devrais jeter un coup d'œil au plan d'exécution de ma SQL pour faire un jugement sur la qualité de sa performance. Cependant, je ne suis pas vraiment sûr où commencer avec cette fonctionnalité ou ce que cela signifie exactement.

Je recherche soit une bonne explication de ce que le plan d'exécution fait, quelles sont ses limites et comment je peux l'utiliser ou la direction à une ressource qui fait.


0 commentaires

7 Réponses :


1
votes

Un moyen de faciliter cela, c'est simplement en utilisant "Ctrl L" (Query | Afficher le plan d'exécution estimé) pour certaines de vos questions, dans SQL Management Studio.

Cela permettra de montrer une vue graphique du plan d'exécution, qui, au début, sont plus faciles à "décoder" que sa version texte.

plans de requête dans une infime noisette :
Essentiellement, le plan de requête montre la manière dont SQL Server a l'intention d'utiliser dans la résolution d'une requête.
Il y a en effet de nombreuses options, même avec des requêtes simples.
Par exemple, lorsqu'il s'agit d'une jointure, il faut décider de se boucler à travers les lignes [filtrées] de "Tableau A" et de rechercher les lignes de "Tableau B" ou de boucler en boucle d'abord "Tableau B" (ceci est Un exemple simplifié, car il existe de nombreuses autres astuces pouvant être utilisées pour traiter des jointures). En règle générale, SQL estimera le nombre de lignes [filtrées] qui seront produites par une table et choisissez celle que le plus petit décompte pour la boucle extérieure (car cela réduira le nombre de recherches dans l'autre table)
Un autre exemple, est de décider des indices à utiliser (ou de ne pas utiliser).

Il existe de nombreuses ressources en ligne ainsi que des livres décrivant plus en détail les plans de requête, la difficulté est que l'optimisation des performances SQL est un problème très large et complexe, et beaucoup de ces ressources ont tendance à faire trop de détails pour le novice ; One a d'abord besoin de comprendre les principes et structures fondamentaux qui sous-tendent SQL Server (la manière dont les index fonctionnent, la manière dont les données sont stockées, la différence entre les index en cluster et les tas ...) avant de plonger dans beaucoup de les détails [important] de l'optimisation de la requête. C'est un peu comme baseball: vous devez d'abord connaître les règles avant de comprendre tous les concepts subtils [et importants] liés à la stratégie de jeu.

Voir ce lien associé alors question pour des pointeurs supplémentaires.


0 commentaires

4
votes

Il décrit les algorithmes réels que le serveur utilise pour récupérer vos données.

Un requête SQL comme ceci: xxx

, décrit < em> quel devrait être fait mais pas comment cela devrait être fait.

Le plan d'exécution montre comment : quels index sont utilisés, Les méthodes de jointure sont choisies (boucles imbriquées ou jointure de hachage ou jointure à la fusion), comment les résultats sont regroupés (en utilisant le tri ou le hachage), comment ils sont commandés, etc.

Malheureusement, même moderne SQL < / Code> Les moteurs ne peuvent pas trouver automatiquement les plans optimaux pour des requêtes plus ou moins complexes, il prend toujours un développeur SQL pour reformuler les requêtes afin qu'elles soient performantes (même elles font quelle est la requête originale).

Un exemple classique serait ces deux requêtes: xxx

et xxx

, qui fait le même et en théorie doit être exécuté à l'aide des mêmes algorithmes.

Cependant, aucun moteur réel optimisera l'ancienne requête pour mettre en œuvre les mêmes algorithmes, je . e. stocker un compteur dans une variable et incrémenter.

Il fera savoir ce à quoi il se dit de faire: compter les rangées encore et encore et encore.

Pour optimiser les requêtes dont vous avez besoin de En fait, voir ce qui se passe dans les coulisses, et c'est ce que les plans d'exécution vous montrent.

Vous voudrez peut-être lire cet article dans mon blog:


0 commentaires

2
votes

ici et ICI est un élément d'article vérifier. Les plans d'exécution vous permettent d'identifier la zone qui prend du temps et vous permet donc d'améliorer votre requête.


0 commentaires

0
votes

C'est une partie très sérieuse de la connaissance. Et je suis tout à fait de recommander des cours de formation spéciaux à ce sujet. Quant à moi après la semaine passée sur des cours, j'ai stimulé la performance des requêtes environ 1000 fois ( nostalgie )


0 commentaires

1
votes
  1. Un plan d'exécution indique exactement comment SQL Server traite une requête
  2. Il est produit dans le cadre du processus d'optimisation des requêtes que SQL Server fait. Ce n'est pas quelque chose que vous créez directement.
  3. Il montrera ce que les index qu'il a décidé sont mieux à utiliser et constitue essentiellement un plan pour la manière dont SQL Server traite une requête
  4. L'optimisateur de requête prendra une requête, analysera et éventuellement proposer un certain nombre de plans d'exécution différents. C'est un processus d'optimisation basé sur des coûts et choisira celui qu'il ressemble est le meilleur.
  5. Une fois qu'un plan d'exécution a été généré, il entrera dans le cache du plan afin que les appels ultérieurs à cette même requête puissent réutiliser le même plan pour sauver avoir à refaire le travail pour créer un plan.
  6. Les plans d'exécution sont automatiquement supprimés du cache, en fonction de leur valeur (les plans de valeur de faible valeur sont supprimés avant que les plans de valeur élevée ne soient pour fournir un gain de performance maximal)
  7. Les plans d'exécution vous aident à repérer des problèmes de performance tels que lorsque les index manquent

0 commentaires

0
votes

Le plan d'exécution vous montre comment la base de données est extraite, trier et filtrer les données requises pour votre requête.

Par exemple: P>

SELECT
    *
FROM
    TableA
INNER JOIN
    TableB
ON
    TableA.Id = TableB.TableAId
WHERE
    TableB.TypeId = 2
ORDER BY
    TableB.Date ASC


0 commentaires

1
votes

Voici une excellente ressource pour vous aider à les comprendre http://downloads.red-gate.com/ebooks/highperformancesql_ebook.zip

Ceci est de Red-Gate qui est une entreprise qui fait de superbes outils SQL Server, c'est gratuit et il vaut bien le temps de télécharger et de lire.


0 commentaires