MS SQL Server 2008 - Benchmark de la compression des sauvegardes


1- Introduction

MS SQL Server 2008 introduit la compression des sauvegardes. Des benchmarks ont été réalisés pour observer les gains en espace et la surconsommation CPU lors de la compression des sauvegardes.

Les cas des bases encryptées avec l'option TDE (Transparent Data Encryption) de SQL Server 2008 et l'influence de la compression lors des opérations de restauration sont également abordés.

Ce benchmark a pour but de comprendre 2 points essentiels évoqués dans les documentations de Microsoft :

2- Activation de la compression des sauvegardes

La compression des sauvegardes pour une base de données est activée par 2 méthodes :

Au niveau serveur, la compression des sauvegardes est activée systématiquement lorsque le paramètre serveur "backup compression default" est positionné à 1 :

sp_configure 'backup compression default',1
reconfigure with override
go

sp_configure 'backup compression default'
go
name                                minimum     maximum     config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
backup compression default          0           1           1            1

La compression peut n'être appliquée que pour une seule base de données avec l'option WITH COMPRESSION des commandes BACKUP DATABASE et BACKUP LOG :

BACKUP DATABASE <dbname> TO DISK='<chemin_vers_fichier_sauvegarde>' WITH INIT, COMPRESSION
BACKUP LOG <dbname> TO DISK='<chemin_vers_fichier_sauvegarde>' WITH INIT, COMPRESSION

Il n'est pas nécessaire de spécifier la moindre option de compression lors d'opérations RESTORE DATABASE/LOG, la compression est automatiquement détectée à la restauration.

Contrairement à Sybase, il n'existe pas de taux de compression (1, 2, 3 etc...), le niveau de compression dans SQL Server est un simple flag

3- Contexte et outils pour le benchmark

3-1- Bases de test

Les tests sont réalisés sont 2 bases de données SQL Server 2008 avec les caractéristiques suivantes :

Base Taille Encryption TDE
phobos 35,1 Gb Non
CRM 16,02 Gb Oui

La base CRM est encryptée avec l'option TDE (Transparent Data Encryption).

Chaque opération de sauvegarde/restauration est jouée 5 fois pour en tirer une moyenne et les sauvegardes sont réalisées vers un support unique (device), aucun stripping n'est appliqué.

3-2- Outil de détection de la consonmmation CPU (vue dynamique dm_exec_sessions)

La consommation CPU des commandes backup/restore est mesurée grâce à la vue dynamique dm_exec_sessions pour le process ID qui exécute les commandes backup/restore (sessionid = @@spid). La requête ci-dessous est exécutée avant et après chaque commande backup ou restore.

SELECT es.session_id
    ,es.program_name
    ,es.login_name
    ,es.nt_user_name
    ,es.login_time
    ,es.host_name
    ,es.cpu_time
    ,es.total_scheduled_time
    ,es.total_elapsed_time
    ,es.memory_usage
    ,es.logical_reads
    ,es.reads
    ,es.writes
FROM sys.dm_exec_sessions es
WHERE es.session_id=@@spid

4- Résultats des benchmarks

4-1- Pré allocation du fichier de sauvegarde lors de l'activation de la compression

Sans compression, SQL Server alloue un fichier de sauvegarde dont la taille est égale à la taille de la base en données afin de réserver un espace contigü.

Lorsque la compression est activée, une constante est observée : la taille du fichier de sauvegarde préalablement créé dès le lancement de la commande backup database est d'environ 33% de la taille de la base. SQL Server ne sait donc pas estimer le taux de compression au plus juste lors du démarrage de la sauvegarde, tout va dépendre en effet du typage des données dans la base.

pré allocation au démarrage de la sauvegarde

4-2- Performances des taux de compression

Les résultats sont sans appel, la compression est inefficace sur les bases encryptées avec TDE. 80% pour une base classique non encryptée, 0,34% pour une base encryptée TDE.

Base Taille sauvegarde non compressée Taille sauvegarde compressée Taux de compression
phobos (non encryptée TDE) 35,12 Gb 6,8 Gb 80,64 %
CRM (encryptée TDE) 16,04 Gb 15,99 Gb 0,34 %

influence de l'encyrption sur la compression

4-3- Performances des temps de sauvegardes avec la compression

Dans tous les cas de figure, base encryptée avec TDE ou non, les temps de sauvegarde semblent meilleurs de 15 à 25% avec la compression.

Base Sans compression Avec compression Gain en temps
phobos (non encryptée TDE) 105,18 Mb/sec 131,26 Mb/sec 24,8 %
CRM (encryptée TDE) 68,07 Mb/sec 79,05 Mb/sec 16,13 %

L'amélioration des temps de sauvegarde est tout de même la plus notable pour la base phobos non encryptée.

amélioration des temps de sauvegarde avec la compression

4-4- Surconsommation CPU avec la compression

La surconsommation CPU pour une base normale est de 30% environ, ce qui est très raisonnable, en revanche lorsqu'il s'agit d'une base encryptée TDE, la consommation CPU explose d'un facteur de 1000.

Base Consommation CPU sans compression Consommation CPU avec compression Surconsommation
phobos (non encryptée TDE) 1594 2067 29,67 %
CRM (encryptée TDE) 737 9414 1177,34 %

Evolution de la consommation CPU avec la compression des sauvegardes

4-4- Performances des restaurations avec des sauvegardes compressées

Il n'a pas été noté une quelconque amélioration ou dégradation des temps de restaurations à partir de sauvegardes compressées.

Base Temps de restauration - sauvegarde non compressée Temps de restauration - sauvegarde compressée
phobos (non encryptée TDE) 85,02 MB/sec 84,99 MB/sec
CRM (encryptée TDE) 63,7 MB/sec 63,67 MB/sec

La contention sur les disques vient immédiatement à l'esprit pour expliquer un temps équivalent de restauration à partir d'une sauvegarde compressée ou non, cependant la contention sur les disques ne peut pas à elle seule expliquer la surconsommation CPU très forte observée lors de la restauration de sauvegardes compressées : 100 à 120% pour une base non encryptée, plus de 800% pour une base encryptée TDE.

Base Consommation CPU - sauvegarde non compressée Consommation CPU - sauvegarde compressée Surconsommation CPU
phobos (non encryptée TDE) 1593,75 3484,25 118 %
CRM (encryptée TDE) 850,75 7937,5 833 %

Evolution de la consommation CPU lors des restaurations de sauvegardes compressées

L'utilisation du gouverneur de ressources (resource governor) prend tout son sens lors des restaurations à partir de sauvegardes compressées, y compris pour les bases non encryptées avec TDE.

5- Conclusions

Les informations des documentations Microsoft sont confirmées.

Pour conclure : ne jamais appliquer la compression des sauvegardes pour les bases encryptées avec TDE, cette fonctionnalité n'apporte rien en taux de compression et a un impact dramatique sur la consommation CPU de SQL Server.

Quant à l'utilisation du gouverneur de ressources pour limiter la surconsommation CPU lors de la sauvegarde compressée de bases classiques non encryptées, elle n'est nécessaire que si les heures des sauvegardes coïncident avec une activité forte dans la base.


Annexe

Historique

Version Date Commentaires
1.0 09/2010 Version initiale

Liens

SQL Server 2008 BOL : backup compression