SQL Server 2016 : Les nouveautés

Explorer les nouveautés des index columnstore

Testez gratuitement nos 1271 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Faites le tour des différentes nouveautés sur les index columnstore. Cette technologie est totalement intégrée et beaucoup plus intéressante dans SQL Server 2016.
07:22

Transcription

L'index Columnstore est une nouveauté qui a été introduite en SQL server 2012 et qui est un type d'index particulier qui permet d'améliorer les performances des requêtes analytiques. De ce type-là, par exemple, je fais un select avec des sommes sur une table assez volumineuse. Donc, je vais devoir parcourir l'ensemble des données pour faire des calculs d'agrégation. L'index Columnstore est une technologie qui a été integrée dans SQL server en 2012 qui garde des données plutôt orientées colonne dans des pages spécifiques colonne par colonne en mémoire compressée. Ils sont très utiles pour les requêtes analytiques. Quand cette fonctionnalité a été introduite SQL server 2012 on pouvait faire des index non cluster Columnstore sur les tables existantes. Mais cela rendait la table lecture seule. Vous ne pouvez plus à ce moment-là modifier les données, il fallait supprimer l'index Columnstore ou désactiver, modifier les données, c'est-à-dire, par exemple, une fois par jour rafraîchir ces données et ensuite on recrée l'index Columnstore . En 2014 la nouveauté a été de créer des index Columnstore Cluster, donc, non plus non Cluster, mais Cluster. Et donc, finalement de stocker l'integralité d'une table dans un index Clustered Columnstore . A ce moment-là ça rendait la table ouverte en lecture parce que finalement elle était complètement contenue dans cet index Columnstore. Il y a un mécanisme de différences qui permet d'écrire petit à petit, de compresser petit à petit ces données dans le Clustered Columnstore. En 2016 il y a eu de nombreuses améliorations intéressantes de l'index Columnstore qui le rendent maintenant particulièrement bien integré. Première chose et je vais vous le montrer comme ceci : je vais créer un schéma que je vais appeler analytique. Je vais insérer dans mon schéma analytique mes factures, et donc, je vais avoir maintenant quelque chose comme ceci. Un certain nombre de factures sur lesquelles je veux faire de l'analytique. Voilà, et je vais créer un index non Clustered Columnstore sur cette table en insérant dans l'index non cluster toutes les colonnes pour pouvoir bénéficier l'index Columnstore pour améliorer les performances de cette requête. Déjà telle quelle je vais lancer cette requête. Je vais regarder le plan d'exécution aussi, et je vois que mon index Columnstore est utilisé, tout va bien. Alors, je vais regarder quelque chose ici qui s'appelle le mode d'exécution. Si vous regardez plutôt vers le haut en troisième ligne vous voyez mode d'exécution estime Batch. Le Mode d'exécution Batch c'est quelque chose qui a été ajouté avec l'index Columnstore en 2012 et qui est une technologie liée au Columnstore qui permet en mémoire de faire des vecteurs, des tableaux de mille valeurs et de travailler avec des algorithmes optimisés pour faire des agrégats des sommes, par exemple sur ce vecteur de mille valeurs au lieu de traiter la somme valeur par valeur. C'est donc un algorithme particulièrement puissant pour améliorer les requêtes analytiques, les calculs d'agrégat. Le problème c'est qu'en 2012 ce mode Batch était imité à très peu de cas, c'est-à-dire que les syntaxes de requête étaient vraiment limitées pour utiliser le mode Batch. Ça, s'est nettement amélioré en 2014 en 2016. Il y a aussi des améliorations du mode Batch. Il peut être utilisé dans beaucoup de cas. Notamment quand le parallélisme est désactivé ou qu'il n'est pas utilisé. En fait, le Columnstore utilise beaucoup le parallélisme quand on utilise plusieurs processeurs pour exécuter la requête. Et le mode Batch n'était possible avant 2016 que lorsque la requête est parallélisée. Maintenant, si je force cette requête à s'exécuter sur un seul processeur, eh bien, SQL 2016, le mode Batch, comme vous le voyez, peut être utilisé également Vous n'aurez pas du tout ce comportement en SQL server 2014 où vous serez en mode Lot, c'est-à-dire un traitement ligne par ligne. Autre nouveauté : ceci. Alors, je revois ma table, ici j'ai créé un non clustered colomnstore index et je voulais dire en 2012 ça rend la table complètement en lecture seule. Eh bien, autre nouveauté : vous pouvez à partir de 2016 faire des modifications sur une table qui est un index nonclustered colomnstore. Cet index devient, donc, semblable aux autres index. Il va pouvoir être maintenu en TRAN. Je vous le démontre juste comme ça. Voilà, j'ai fait une modification. SQL server n'a pas râlé du tout parce que maintenant l'index nonclustered columnstore est tout à fait supporté en écriture également. Alors, autre nouveauté : vous pouvez lorsque vous créez une table, là je vais faire une table analytique facture 2, créez directement in line votre index Nonclustered Columnstore, ce qui n'était pas possibe avant. Il fallait le créer après. Maintenant je peux donc directement créer ma table et dire : à l'intérieur je veux un index Nonclustered Columnstore, comme ceci. Cette syntaxe aussi est nouvelle. Encore mieux, je vais supprimer mon index Nonclustered Columnstore sur ma table originelle analytique facture. Je vais créer un index Clustered Columnstore sur ma table, et maintenant ça devient une table Columnstore. Eh bien, sur cette table Columnstore qui a un index Clustered Columnstore je vais pouvoir ajouter un index B3, un index nonclustered traditionnel sur cette table, ce qui était totalement impossible avant. Comme les tables qui ont un index Clustered Columnstore sont stockées sous un format complètement différent des tables traditionnelles on pouvait en 2014 faire un autre index B3 par dessus. Eh bien, cette limitation a levé également, voici un index B3 que je vais faire sur facture CD en faisant Include en plus du MontantTTC, ce qui va me permettre d'utiliser ma table analytique facture qui est donc une table Clustered Columnstore, si je regarde le plan d'exécution. Je fais simplement un scan de l'index Columnstore ici l'index Cluster, mais si je fais ça, eh bien, j'ai la même chose, par contre, si je fais ceci, parce que là j'ai couvert ma requête avec l'index. Maintenant j'ai un comportement d'index traditionnel et je vais donc pouvoir à la fois utiliser cette table avec d'excellentes performances sur de l'analytique pour faire des calculs d'agrégat ou pour pouvoir chercher à l'interieur des données sélectives comme ici en ayant également d'excellentes performances sur le filtre grâce à un index B3: Donc, maintenant on peut dire sur cette version 2016 l'index Columnstore est coplètement integré dans SQL server et devient vraiment, vraiment très très intéressant à manipuler pour des tables qui sont à la fois de l'analytique et des tables operationnelles.

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 !