La CTP3 de SQL Server 2016 vient d’être annoncée. C’est donc le moment de s’intéresser aux nouvelles fonctionnalités apportées par cette version. Comme on a pu le voir dans les articles précédents, le moteur de SQL Server a bien évolué et apporte plein de nouvelles fonctionnalités. Aujourd’hui nous allons voir que SQL Server Management Studio n’est pas resté en reste. En effet une nouvelle fonctionnalité demandée depuis pas mal de temps est apparue : la comparaison de plans d’exécution.
Lorsque l’on exécute une requête, SQL Server crée un plan d’exécution. Ce plan est la liste des opérations à exécuter afin d’obtenir le résultat de la requête. Il peut différer selon plusieurs critères : requêtes différentes, index disponibles, statistiques, version de SQL Server, etc.
Il est parfois utile de pouvoir comparer 2 plans d’exécution afin de voir les différences entre eux et ainsi comprendre ce qui peut amener un gain ou une perte de performance d’une requête.
Comment ça fonctionne ?
La première étape est d’enregistrer 2 plans d’exécutions :
On se retrouve avec 2 fichiers .sqlplan
.
Ensuite, ouvrir un plan d’exécution dans Management Studio et cliquer sur Comparer les plans d’exécution :
On se retrouve avec les 2 plans d’exécution côte à côte :
On peut même changer l’orientation ;)
Points d’intérêts
Il y a 2 Property Grids (une par plan d’exécution) ce qui permet de facilement comparer le détail de chaque élément.
Les parties du plan d’exécution qui font fondamentalement la même chose sont colorées de la même couleur. Il est ainsi plus facile de voir les similitudes ou les différences entre les 2 plans, surtout lorsque ceux-ci sont grands.
La comparaison s’effectue sur des plans d’exécution offline (fichiers .sqlplan
). Cela permet de comparer des plans d’exécutions pris à différents moments, ou provenant de serveurs différents (y compris en version). Il est ainsi possible de comparer le plan d’exécution d’une requête jouée sur SQL Server 2012 avec celle exécutée sur SQL Server 2016.
Conclusion
Cette petite nouveauté va surement faire plaisir à ceux qui optimisent régulièrement des requêtes SQL et qui jusque-là éprouvaient quelques difficultés par manque d’outillage.