Petit retour d’expérience sur l’usage des CCSI (Clustered Column Store Index) avec SQL Server 2014.

Avec un de nos clients, nous avons fait quelques bench sur le sujet. Sur une architecture équivalente, nous avons mis en place un index columnstore sur une table de fait contenant plus de 300 millions d’enregistrements. Malgré me dires et ceux de Microsoft, mes interlocuteurs étaient très sceptiques tout en fondant de grands espoirs.

La mise en œuvre n’a pris qu’une 10aine de minutes. Il a fallu dans un premier temps supprimer tous les indexes existants ainsi que les différentes clé étrangères et créer tout simplement le CCSI:

CREATE CLUSTERED COLUMNSTORE INDEX cci_Sale ON fac.Sale;

Le résultat ne s’est pas fait attendre, nous avons noté :

  • un gain impressionnant au niveau du stockage, la table qui pesait anciennement 47 Go (non compressée) n’en fait plus que 3 Go soit un facteur x15. Imaginez votre entrepôt de données pesant 1To reduit à une 100 de Go…
  • mais aussi un gain conséquent en terme de performance, en exécutant la même requête nous sommes passées de plus de 3min à 7 sec soit un facteur x25.

C’est à peu près ce que je constate en moyenne :

  • un facteur x10 en termes de stockage sur des tables non compressées
  • un facteur x4 sur des tables avec une compression par page
  • un gain de performance x20

Logique le fort taux de compression se retrouve en terme de performance au niveau des I/O. En effet, le moteur lit beaucoup moins de pages de données pour le retourner le même résultat.

De plus, le stockage des données se fait en colonne dans des blocs de segments contenant => plus besoin de s’embêter avec les indexes non clustered, ce qui allège aussi considérablement les plans de maintenance.

Par ailleurs, le moteur SQL utilise ces segments pour éliminer plus rapidement les données ne répondant pas aux prédicats imposés par votre requête.

Et vous, quand est-il sur vos projets ?

Pour vos premières lectures:

Pour ceux qui veulent approfondir le sujet, n’hésitez pas à consulter le blog de Niko Neugebauer (twitter)

N.B : les CCSI sont aussi disponibles sur les Azure SQL DBs 🙂

Alors qu’attendez-vous pour passer sur SQL Server 2014, la release 2016 ? Et pourquoi pas passer utiliser Azure SQL Database, pour bénéficier de toute la souplesse des solutions cloud !

FreD.