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 : Les nouveautés

Utiliser le Query Store

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Vous allez vous intéresser à un exemple simple d'utilisation du Query Store. Rudi Bruchez vous montre les capacités d'analyse de cet outil.
06:25

Transcription

Pour vous montrer le comportement du Query Store je vais prendre un exemple très simple. L'exemple d'une procédure stockée qui existe déjà dans PachaDataFormation et qui s'appelle Contact.GetContactEtInscriptionsParNom. Voyons son code, il s'agit d'avoir un paramètre, un Varshar 50 qui correspond au nom, et ensuite de chercher dans la table Contact. en faisant une jointure externe sur la table Inscription. Tous les contacts dont le nom commence par le nom qui a été envoyé, j'utilise un Like, je prends le nom et j'ajoute le pourcent. Je fais un Groupe By Contact, un Order By Nom et Prénom et je veux compter le nom d'Inscription. Donc, je veux récupérer une liste de contact. selon le début du nom et le nombre d'inscriptions. dans la table Inscription de ces contacts. Ce sont, donc, des gens qui s'inscrivent à des sessions de formations chez PachaData. Mon Query Store est, donc, activé ici. Je suis en « On ». Si je regarde les propriétés J'ai, donc, déjà un petit peu d'information, Et puis, je vais en activant les statistiques d'entrée, sortie appeler d'abord, je vais faire comme ceci, un Freeproccache pour être sûr de vider le Cache de plan et le Cache de procédure. Je vais faire un premier appel avec Feragotto qui me donne 5 lectures logiques sur la table Contact, 70 sur la table Inscription, rien de dramatique. Je vide mon Cache de plan et je réappelle ma procédure avec un « A » ce qui me donne 680000 lignes au lieu d'une ligne pour Feragotto, cette fois-ci avec 286 lectures logiques sur Contact. Ce n'est pas un énorme changement, mais bon. Voyons ce qu'en dit le Query Store. D'abord je vais identifier cet appel. Je vais utiliser des vues de Métadonnée : query_store_plan, query_store_query, etc. pour extraire du Query Store la requête qui m'intéresse. Il faut que je l'identifie. Je m'aperçois ici que j'ai un Context_settings_id et le Context_settings viennent de quelque chose qui est nouveau également et qui fait partie du Query Store, des Query Contexts. Des contextes différents dans lesquels les requêtes peuvent changer finalement. Un contexte C, un contexte de setting, parfois différentes sessions qui ont des options différentes, qui ont des maxdones différents, des choses comme ça. Donc, chaque requête s'exécute dans un contexte particulier, si la même requête s'exécute dans deux contextes son plan peut changer. Alors, il se trouve que si je cherche un peu je vois que beaucoup de requêtes qui semblaient être des requêtes systèmes sont exécutées dans contexte 1, je vais regarder plus loin. J'ai un contexte 3 dans lequel j'ai l'audit manifestement, et ici j'ai un contexte 2 qui semble être un contexte à moi. Donc, je vais regarder uniquement les requêtes du contexte 2, et je vois que j'ai deux fois la même requête qui est extraite en fait de la procédure stockée. Ce sont des plans d'une instruction à l'intérieur de la procédure stockée, on voit qu'il y a une paramétrisation, un paramètrage de la requête avec le varchar 50, donc, c'est bien ce que je cherche. Le Query Store a stocké des identifiants de plan, des identifiants de requéte, des identifiants du texte de la requête. Je vois que mon query_id est 52 pour les deux, et que les plans, par contre, sont différents. Donc, je regarde, le query_id 52, et je vais aller le voir dans les requêtes suivies. Je vais filtrer sur le 52, et je m'aperçois que pour mon plan, en fait, ou plutôt pour ma requête, eh bien, j'ai deux plans, le 52 et le 53. Je vois qu'en terme de temps, moyen d'exécution, ici j'ai le plan 53 qui a une durée de 91000, il s'agit de microseconde, 91000 microsecondes. Ici beaucoup moins, 2311 microsecondes ou vous pourrez dire que ce plan, par exemple, est plus intéressant. Je pourrais dire ici « Forcer le plan ». Si je force la requête 52 va utiliser ce plan, eh bien, j'applique ce forçage, ce qui va charger dans SQL server l'obligation en voyant passer cette requête d'utiliser ce plan. Ça paraît une bonne idée, mais pas forcément. Alors là, on ne va pas entrer dans les détails, mais c'est quelque chose qui n'est pas forcément une bonne idée ici. Dans certains cas ça peut être intéressant de forcer la requête à utiliser tel ou tel plan, mais selon le nombre de lignes qui vont être affectées ça peut être une très mauvaise idée. Donc, c'est à manipuler vraiment avec précaution. Par contre, il est maintenant très facile de prendre une requête et de lui dire eh bien, voici le plan d'exécution qui convient le mieux, je le fixe en mémoire. Bon, et voilà, j'ai forcé le plan, j'ai ici un petit V qui me dit : voilà le plan qui est forcé, et celui-ci ne sera plus utilisé. Je peux annuler l'obligation d'utiliser le plan. Et l'optimiseur redevient libre de ses choix. Voilà, c'était pour vous montrer un exemple assez simple d'utilisation du Query Store, bon, je me répète : l'idée de forcer le plan est quelque chose qui peut être parfois relativement une bonne idée et puis parfois une très mauvaise idée. Il se trouve que par rapport à ce Query Store eh bien, on vous donne la possibilité de faire quelque chose qui n'est pas, de mon point de vue, toujours la meilleure solution. Alors, utilisez-le avec circonspection, bien entendu. De toute façon, entre parenthèse vous noterez ici que déjà le plan d'exécution ne suggère la création d'un index. Donc, avant de forcer le plan ça serait, peut-être, une bonne idée de créer déjà l'index et de voir ce que ça donne. Mais bon, ça, c'est un autre débat. Donc, voilà, pour le Query Store une fonctionnalité qui va vous permettre de surveiller beaucoup plus facilement l'exécution de vos requêtes.

SQL Server 2016 : Les nouveautés

Découvrez les nouveautés de SQL Server 2016. Voyez les options de configuration limitées aux bases de données, le chiffrage de données à partir des applications clientes, etc.

2h26 (27 vidéos)
Aucun commentaire n´est disponible actuellement
 

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 !