[SQL Server] Query optimization : introduction aux Live Query Statistics

Ce billet présente le Live Query Statistics, une nouvelle fonctionnalité disponible à partir de SQL Server 2016.

Vous pouvez aller ici pour comprendre certains concepts associés à l’optimisation de requêtes (i.e., compilation,…).

Live query statistics : késako ?

La fonctionnalité Live Query Statistics donne un aperçu en temps-réel de l’exécution d’une requête, à travers un plan d’exécution dynamique.

L’affichage des traitements couvre les éléments habituels d’un plan d’exécution, à savoir : le nombre de lignes traitées, le temps passé, les progrès des opérateurs simples et d’autres statistiques bien connues de l’exécution d’une requête. Mais là où la fonctionnalité Live Query Statistics joue un rôle novateur, c’est au niveau de sa capacité à offrir la possibilité d’analyser la requête bien avant qu’elle ne soit terminée, ce qui est utile quand l’on souhaite déboguer une requête complexe et longue dans le cadre d’une optimisation avancée.

  • Requête en cours de traitement (19%):


  • Requête terminée (100%):


Activation et utilisation

Pour activer la fonctionnalité Live Query Statistics, il suffit d’effectuer un clic-droit sur la fenêtre de la requête cible, au sein de SSMS (SQL Server Management Studio), et sélectionner Include Live Query Statistics :.

x

Il est également possible de l’activer à partir de l’icône suivante située tout en haut de SSMS :


D’autres méthodes d’activation existent :

  • Avec les XEvents, en utilisant l’événement query_post_execution_showplan, qui sera activé au niveau de toutes les sessions. Voir ici.
  • Si SET STATISTICS XML ou SET STATISTICS PROFILE est à ON pour une session donnée, alors au sein de l’Activity Monitor, section Active Expensive Queries, le Live Query Statistics peut être consulté :


Le message de sortie de Live Query Statistics peut être lu de la même manière qu’un plan d’exécution classique.

Quelques limitations

Comme toute fonctionnalité qui se respecte, Live Query Statistics possède quelques limitations :

  • Cette fonctionnalité est à utiliser avec modération, pour des raisons de performances.
  • Elle ne supporte pas les requêtes utilisant des index columnstore, des tables optimisées en mémoire ou des procédures stockées (et fonctions) nativement compilées en mémoire.

Pour aller plus loin…

Vous pouvez aller ici, pour consulter d’autres billets sur l’optimisation de requêtes.


Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s