SQL SERVER 2008 apporte une nouveauté dans la compression : La faculté de compresser une table.
Pour réaliser cette compression, vous pouvez opter pour la compression par page de données ou par ligne. (PAGE COMPRESSION, ROW COMPRESSION)
Hormis le taux de compression que l’on gagne, donc un I/O réduit, et par déduction un gain de performance notable (modulo votre overhead CPU), quel choix faire entre Row ou Page Compression ?
Rappel de ces deux modes de stockage différents :
Row Compression : Les données dont le type est fixé (genre Char(100) sont stockées sous forme variable, avec optimisation du stockage de l’information de longueur. Et qui dit gain de bits non utilisés, dit plus moins de place pris par la row dans la page, donc plus de données stockées dans la page etc …
Page Compression : Les données redondantes sont stockées unitairement dans la page (genre une valeur par défaut) pour sauvegarder de la place. Qui dit gain de place, dit plus de données dans une page etc …
Généralement, on va dire que :
Si vous avez une activité intense, typique d’une base de données OLTP, utilisez la ROW COMPRESSION
Si vous avez une activité aléatoire, une table d’archive accédée plus rarement, utilisez la PAGE COMPRESSION
Ce genre de scénario est très utilisé dans les partitions de table par exemple:
On peut imaginer une table partitionnée par date, dont les données de l’année en cours sont compressées en mode ROW compression, et dont les données antérieures à 10 ans (par ex) stockées sur une autre partition sont compressées avec le mode PAGE Compression
Bonne compression