Implémentation de la compression Unicode

SQL Server utilise une implémentation de l'algorithme SCSU (Standard Compression Scheme for Unicode) pour compresser les valeurs Unicode stockées dans des objets à compression de ligne ou de page. Pour ces objets compressés, la compression Unicode est automatique pour les colonnes nchar(n) et nvarchar(n). Le Moteur de base de données stocke les données Unicode comme 2 octets, indépendamment des paramètres régionaux. Ceci porte le nom d'encodage UCS-2. Pour certains paramètres régionaux, l'implémentation de la compression SCSU dans SQL Server peut économiser jusqu'à 50 pour cent d'espace de stockage.

Types de données pris en charge

La compression Unicode prend en charge les types de données de longueur fixe nchar(n) et nvarchar(n). Les valeurs de données stockées hors ligne ou dans des colonnes nvarchar(max) ne sont pas compressées.

[!REMARQUE]

La compression Unicode n'est pas prise en charge pour les données d'nvarchar(max), même si celles-ci sont stockées dans des lignes. Toutefois, ce type de données peut tirer parti de la compression de page.

Mise à niveau à partir de versions antérieures de SQL Server

Lorsqu'une base de données SQL Server est mise à niveau vers SQL Server 2012, les modifications liées à la compression Unicode ne sont apportées à aucun objet de base de données, compressé ou non compressé. Une fois la base de données mise à niveau, les objets sont affectés comme suit :

  • Si l'objet n'est pas compressé, aucune modification n'est apportée et l'objet continue de fonctionner comme précédemment.

  • Les objets à compression de page ou de ligne continuent de fonctionner comme précédemment. Les données non compressés restent sous forme non compressée jusqu'à ce que leur valeur soit mise à jour.

  • Les nouvelles lignes insérées dans une table à compression de page ou de ligne sont compressées à l'aide de la compression Unicode.

    [!REMARQUE]

    Pour tirer pleinement parti des avantages de la compression Unicode, l'objet doit être reconstruit avec compression de ligne ou de page.

Impact de la compression Unicode sur le stockage des données

Lorsqu'un index est créé ou reconstruit ou lorsqu'une valeur est modifiée dans une table compressée avec la compression de page ou de ligne, l'index ou la valeur affecté est stockée sous forme compressée uniquement si sa taille compressée est inférieure à sa taille actuelle. Cela empêche que la taille des lignes dans une table ou un index n'augmente à cause de la compression Unicode.

L'espace de stockage économisé par la compression dépend des caractéristiques des données compressées et des paramètres régionaux des données. Le tableau suivant répertorie les économies d'espace qui peuvent être accomplies pour plusieurs paramètres régionaux.

Paramètres régionaux

Pourcentage de compression

Anglais

50%

Allemand

50%

Hindi

50%

Turc

48%

Vietnamien

39%

Japonais

15%

Voir aussi

Référence

sp_estimate_data_compression_savings (Transact-SQL)

sys.dm_db_persisted_sku_features (Transact-SQL)

Concepts

Compression de données

Implémentation de la compression de page