Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Créer une table avec compression dans SQL Server (T-SQL)

Lorsque vous créez une table dans SQL Server, vous avez la possibilité d'utiliser la compression des données.

La compression des données permet de réduire la taille de la base de données. Cela peut également aider à améliorer les performances des charges de travail intensives en E/S, car les données sont stockées sur moins de pages, réduisant ainsi le nombre de pages que les requêtes doivent lire à partir du disque.

Pour cela, utilisez le DATA_COMPRESSION option lors de la création du tableau.

Exemple

Voici un exemple pour illustrer.

CREATE TABLE Movies (
    MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MovieName nvarchar(200)
    )
WITH (DATA_COMPRESSION = ROW);

Dans ce cas, j'utilise la compression de lignes.

Ce qui suit utilise la compression de page.

CREATE TABLE Movies (
    MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MovieName nvarchar(200)
    )
WITH (DATA_COMPRESSION = PAGE);

Comment supprimer la compression

Vous pouvez supprimer la compression en utilisant ALTER TABLE instruction pour reconstruire la table, tout en utilisant NONE comme type de compression.

ALTER TABLE MOVIES
REBUILD WITH (DATA_COMPRESSION = NONE);

Tableaux du magasin de colonnes

Si vous utilisez des tables columnstore (tables stockées avec un index cluster columnstore), les types de compression ci-dessus ne s'appliquent pas. Dans ce cas, vos options de compression sont COLUMNSTORE et COLUMNSTORE_ARCHIVE .

Les résultats de compression peuvent varier

La quantité de compression obtenue dépendra des données et du type de compression.

ROW la compression, par exemple, supprime les octets inutiles des valeurs de colonne en les stockant dans un format de longueur variable. PAGE la compression, en revanche, stocke les valeurs répétées une seule fois par page et définit le pointeur à partir des colonnes respectives de la page.

Parfois, vous pouvez constater que la compression d'un objet ne diminue pas toujours sa taille et, dans certains cas, peut en fait augmenter sa taille.

Cela peut se produire si vos colonnes utilisent un type de données qui ne bénéficie pas de la compression.

En outre, la compression des lignes réduit la surcharge des métadonnées, mais dans certains cas, la surcharge peut être supérieure à l'ancien format de stockage.

Si vos données ne bénéficient pas de la compression en raison de leur type de données, il est probable que la surcharge entraînera une augmentation des besoins de stockage, plutôt qu'une diminution.

Mais les variations de la taille de compression dépendront également des données réelles. Par exemple, si vous avez un char(10) colonne, la compression supprimera tous les caractères de remplissage de fin. Si vous avez beaucoup de lignes avec des caractères de remplissage à la fin, vous devriez obtenir un meilleur résultat que si vous n'avez pas (ou peu) de lignes avec des caractères de remplissage à la fin.