Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

SQL Server 2016 pour les administrateurs IT

Découvrir les statistiques

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
L'optimiseur de requête est chargé de créer des plans d'exécution au fonctionnement optimal. Pour cela, vous devrez vous assurer que les statistiques soient bien à jour.
06:28

Transcription

Nous avons vu que l'optimiseur peut faire des choix par rapport au nombre de résultats. J'ai fait une recherche avec « lacroix », j'ai obtenu 93 lignes, le plan d'exécution c'est une analyse, alors bon, la traduction est totalement ratée ici. Analyse ici c'est une traduction de scan en anglais. Donc le scan c'est plutôt un parcours qu'une analyse, donc il a parcouru l'index clustered et en fait index cluster dans SQL serveur ça veut dire la table elle-même, une table qui est organisée. Donc on a scanné la table, on a parcouru la table toute entière. Par contre si je fais une recherche avec feragotto, je vais reprendre son nom, enfin là comme ceci, je n'ai qu'un seul résultat et donc je fais une recherche dans l'index. Il y a quelque chose qu'il faut préciser. C'est le moteur de requête de SQL serveur va prendre la requête, il va analyser la requête, ensuite bâtir un plan d'exécution et c'est seulement ensuite que ce plan d'exécution sera mis en oeuvre évidemment. On va déterminer une stratégie et ensuite on va l'exécuter. Mais ce qu'on vient de voir c'est que selon la valeur du paramètre ici la stratégie va être différente. Ça veut dire que le SQL serveur doit déterminer sa stratégie avant d'exécuter la requête pour regarder dans la table mais ça veut dire aussi que SQL serveur pour déterminer sa stratégie doit regarder dans la table puisqu'il doit savoir combien il y a de feragotto, de lacroix pour dire vaut mieux utiliser un index ou non. C'est l'œuf et la poule. Comment faire pour savoir combien il y a de feragotto sans regarder dans la table ? Il n'y a qu'une seule solution, il faut maintenir des informations sur les valeurs des colonnes, et c'est ce que fait SQL serveur. Ces informations s'appellent des statistiques, et vous le voyez ici, nous avons aussi un dossier statistique dans chaque table qui vont indiquer quelles sont les statistiques maintenues. Les statistiques ce sont des informations sur les valeurs qui sont présentes dans les colonnes et qui sont stockées dans les tables système et qui sont calculées automatiquement par SQL serveur. Si je prends les statistiques de mon index qui sont ici, alors vous voyez les noms entre paranthèses. Chaque fois qu'on crée un index SQL serveur va créer des statistiques de distribution des valeurs sur les colonnes qu'on a indexées, en tout cas sur la première colonne qu'on a indexée, et ici ces noms Système sont des statistiques qui ont été calculées par SQL serveur au besoin lorsqu'on a fait des requêtes en indiquant des colonnes qui ne sont pas indexées. Il faut quand même qu'il sache à peu près quel est le nombre de valeurs. Ce nombre de valeurs s'appelle, je vous l'écris ici, la cardinalité. C'est un terme qui provient de la théorie des ensembles et qui indique le nombre d'éléments dans un ensemble. Donc on parle souvent de cardinalité du résultat, ça veut dire le nombre de résultats tout simplement. Si je fais cette requête la cardinalité est de 1. Si je fais lacroix la cardinalité du résultat est de 93. Donc je prends mes statistiques et je vais regarder leurs propriétés. On voit que les statistiques ont été créées sur le nom et ici j'ai un détail qui lance une assez vieille commande derrière et qu'il affiche comme ça brut de décoffrage mais on voit que les statistiques représentent ici des valeurs de noms qui ne sont pas toutes les valeurs mais on a fait 199 étapes et on a indiqué un certain nombre de valeurs statistiques entre ces différentes étapes. C'est ce qu'on appelle un histogramme. L'histogramme reprend des valeurs discrètes ici et puis ensuite on a des informations statistiques. On sait par exemple qu'entre adam et allard on a 87 valeurs équivalentes, on a 30 valeurs distincts et on a une moyenne de valeurs de 1,6 entre adam et allard. Avec ces informations statistiques de l'histogramme, bien l'optimiseur de SQL serveur peut lorsqu'on lui passe un paramètre comme celui-ci dire je vais regarder ici, par exemple sous F je n'ai pas de feragotto mais j'ai « faure » ici et j'ai fernandez et donc je vais regarder entre ces 2 combien j'ai de valeurs, j'ai en moyenne 1, quelque chose et donc il va dire bon, il y a à peu près 1, on peut le voir d'ailleurs. Donc on a dit on a feragotto, ça doit être entre faure et fernandez, on a 1,16 ici, on va voir si ça correspond. Je vais reprendre mon plan d'exécution. Lorsque je fais cette demande ici de plan d'exécution estimé qui est ici, je vais obtenir un plan d'exécution avant exécution de la requête, c'est exactement ce que va calculer le moteur d'optimisation, et je vais regarder ici l'estimation, on a un nombre de lignes estimé de 1,33, vous le voyez ici, 1,33. Alors il faut que je revienne dans mon F pour voir si on arrive à corréler. On était là, c'est 1,33. Donc c'est la valeur plutôt de fernandez, entre faure et fernandez, on dit ici il y a 1,33 en moyenne de valeurs représentées entre ces 2 steps. Donc vous voyez que ces statistiques sont importantes pour calculer un bon plan d'exécution. Ces statistiques doivent être maintenues, elles sont maintenues automatiquement par le système parce qu'on a dans les propriétés des bases de données dans Options une création automatique des statistiques est à vrai au besoin et une mise à jour automatique des statistiques qui est à vrai lorsqu'un certain nombre de valeurs ont changé dans la table, il faut bien entendu recalculer ces statistiques. On va reparler dans la section Maintenance de ce qu'il faut faire pour maintenir ces statistiques, c'est relativement important. Mais voilà, c'est pour vous expliquer l'importance des statistiques et la façon dont SQL serveur travaille.

SQL Server 2016 pour les administrateurs IT

Comprenez le fonctionnement et les différents modules qui composent SQL Server. Prenez en main les bases de données, les schémas, les tables, la gestion des fichiers, etc.

5h20 (55 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Votre/vos formateur(s) :
Date de parution :14 mars 2017
Durée :5h20 (55 vidéos)

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !