Activer la compression sur une table ou un index

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Cet article explique comment activer la compression des données dans une table ou un index dans SQL Server à l’aide de SQL Server Management Studio ou de Transact-SQL. Pour activer la compression des données lors de la création d’une table ou d’un index, consultez les exemples fournis dans Créer un index compressé et Création d’une table qui utilise la compression de ligne.

Limitations et restrictions

  • Les tables système ne peuvent pas être activées pour la compression.

  • Si la table est un tas, l’opération de reconstruction pour ONLINE le mode est à thread unique. Utilisez OFFLINE le mode pour une opération de reconstruction de tas multithread. Les opérations de reconstruction sont OFFLINE sauf si vous spécifiez l’option ONLINE . Pour obtenir des informations complètes sur l’exécution d’une ONLINE reconstruction, consultez Effectuer des opérations d’index en ligne.

  • Vous ne pouvez pas modifier le paramètre de compression d'une partition unique si la table possède des index non alignés.

  • Plusieurs types de données ne sont pas affectés par la compression des données. Pour plus d’informations, consultez Conséquences de la compression de ligne sur le stockage.

Autorisations

Nécessite l’autorisation ALTER pour la table ou l’index.

Utiliser SQL Server Management Studio

  1. Dans l'Explorateur d'objets, développez la base de données qui contient la table que vous souhaitez compresser, puis développez le dossier Tables .

  2. Pour compresser un index, développez la table contenant l'index que vous souhaitez compresser, puis développez le dossier Index .

  3. Cliquez avec le bouton droit sur la table ou l’index à compresser, pointez sur Stockage et sélectionnez Gérer la compression... .

  4. Dans l’Assistant Compression de données, dans la page Assistant Compression de données, sélectionnez Suivant.

  5. Dans la page Sélectionner le type de compression , sélectionnez le type de compression à appliquer à chaque partition de la table ou de l'index que vous souhaitez compresser. Quand vous avez terminé, sélectionnez Suivant.

    Les options suivantes sont disponibles dans la page Sélectionner le type de compression :

    • CaseUtiliser le même type de compression pour toutes les partitions

      Sélectionnez cette option pour configurer le même paramètre de compression pour toutes les partitions. La zone de sélection est alors activée et la colonne Type de compression de la grille est désactivée. Lorsqu'une option est sélectionnée, les options dans la liste adjacente sont None, Rowet Page.

    • Numéro de partition

      Répertorie chaque partition de la table ou de l'index. Cette colonne est en lecture seule.

    • Type de compression

      Sélectionnez l'option de compression de chaque partition. N’est pas disponible lorsque l’option Utiliser le même type de compression pour toutes les partitions est sélectionnée. Les options de la liste sont None, Rowet Page.

    • Limite

      Affiche la limite de la partition. Cette colonne est en lecture seule.

    • Nombre de lignes

      Affiche le nombre de lignes de cette partition. Cette colonne est en lecture seule.

    • Espace actuel

      Affiche l'espace actuellement occupé par cette partition en mégaoctets (Mo). Cette colonne est en lecture seule.

    • Espace compressé requis

      Quand vous sélectionnez Calculer, cette colonne affiche la taille estimée de chaque partition après la compression en utilisant le paramètre spécifié dans la colonne Type de compression. Cette colonne est en lecture seule.

    • Calculer

      Sélectionnez ce bouton pour estimer la taille de chaque partition après la compression en utilisant le paramètre spécifié dans la colonne Type de compression.

  6. Sur la page Sélectionner une option de sortie , spécifiez de quelle manière vous souhaitez terminer votre compression. Sélectionnez Créer un script pour créer un script SQL basé sur les pages précédentes de l'Assistant. Sélectionnez Exécuter immédiatement pour créer la nouvelle table partitionnée après avoir complété toutes les pages restantes de l'Assistant. Sélectionnez Planification pour créer la nouvelle table partitionnée à un moment prédéterminé dans le futur.

    Si vous sélectionnez Créer un script, les options suivantes sont disponibles sous Options de script:

    • Générer un script sur fichier
      Génère le script en tant que .sql fichier. Entrez un nom de fichier et un emplacement dans la boîte de dialogue Nom de fichier ou sélectionnez Parcourir pour ouvrir la boîte de dialogue Emplacement du fichier de script. Pour Enregistrer sous, sélectionnez Texte Unicode ou Texte ANSI.

    • Générer un script sur le Presse-papiers
      Enregistre le script dans le Presse-papiers.

    • Générer un script dans une nouvelle fenêtre de requête
      Génère le script dans une nouvelle fenêtre de l'éditeur de requêtes. Il s'agit de la sélection par défaut.

    • Si vous sélectionnez Planification, sélectionnez Modifier la planification.

    1. Dans la boîte de dialogue Nouvelle planification du travail, dans la zone Nom, entrez le nom de la planification du travail.

    2. Dans la liste Type de planification , sélectionnez le type de la planification :

      • Lancer automatiquement au démarrage de SQL Server Agent

      • Démarrer dès que les processeurs sont inactifs

      • Périodique. Sélectionnez cette option si votre nouvelle table partitionnée est mise à jour régulièrement avec de nouvelles informations.

      • Une fois. Il s’agit de la sélection par défaut.

    3. Activez ou désactivez la case à cocher Activé pour activer ou désactiver la planification.

    4. Si vous sélectionnez Périodique:

      1. Sous Fréquence, dans la liste Périodicité , spécifiez la fréquence d'occurrence :

        • Si vous sélectionnez Quotidienne, dans la zone Répéter toutes les , entrez la fréquence de répétition du travail de planification en jours.

        • Si vous sélectionnez Hebdomadaire, dans la zone Répéter toutes les , entrez la fréquence de répétition du travail de planification en semaines. Sélectionnez le jour ou les jours de la semaine pendant lesquels la planification du travail est exécutée.

        • Si vous sélectionnez Mensuelle, sélectionnez Jour ou Le.

          • Si vous sélectionnez Jour, entrez la date du mois à laquelle vous souhaitez que la planification du travail s'exécute, ainsi que la fréquence de répétition de la planification du travail en mois. Par exemple, si vous souhaitez que la planification du travail s’exécute le 15 du mois un mois sur deux, sélectionnez Jour, puis entrez « 15 » dans la première zone et « 2 » dans la deuxième zone. Le plus grand nombre autorisé dans la deuxième zone est « 99 ».

          • Si vous sélectionnez Le, sélectionnez le jour spécifique de la semaine et du mois pendant lequel vous voulez que la planification du travail s'exécute et la fréquence à laquelle la planification du travail doit se répéter en mois. Par exemple, si vous souhaitez que la planification du travail s’exécute le dernier jour de la semaine un mois sur deux, sélectionnez Jour, puis dernier dans la première liste, jour ouvrable dans la deuxième liste et « 2 » dans la dernière zone. Vous pouvez également sélectionner premier, deuxième, troisièmeou quatrième, ainsi que des jours de la semaine spécifiques (par exemple, dimanche ou mercredi) dans les deux premières listes. Le plus grand nombre autorisé dans la dernière zone est « 99 ».

      2. Sous Fréquence quotidienne, spécifiez la fréquence à laquelle la planification du travail se répète le jour de son exécution :

        • Si vous sélectionnez Une fois à, entrez l'heure spécifique à laquelle la planification du travail doit s'exécuter dans la zone Une fois à . Entrez l'heure, les minutes et les secondes du jour, ainsi que AM ou PM.

        • Si vous sélectionnez Toutes les, spécifiez la fréquence à laquelle la planification du travail s'exécute pendant la journée choisie sous Fréquence. Par exemple, si vous souhaitez que la planification du travail se répète toutes les 2 heures le jour d’exécution de la planification du travail, sélectionnez Toutes les, entrez « 2 » dans la première zone, puis sélectionnez heure(s) dans la liste. Dans cette liste, vous pouvez également sélectionner minute(s) et seconde(s) . Le plus grand nombre autorisé dans la première zone est « 100 ».

          Dans la zone Début , entrez l'heure à laquelle l'exécution de la planification du travail doit démarrer. Dans la zone Fin , entrez l'heure à laquelle la planification du travail doit s'arrêter. Entrez l'heure, les minutes et les secondes du jour, ainsi que AM ou PM.

      3. Sous Durée, dans la zone Date de début, entrez la date à laquelle vous souhaitez que l'exécution de la planification du travail commence. Sélectionnez Date de fin ou Aucune date de fin pour indiquer à quel moment l'exécution de la planification du travail doit s'arrêter. Si vous sélectionnez Date de fin, entrez la date à laquelle l'exécution de la planification du travail doit s'arrêter.

    5. Si vous sélectionnez Une foissous Une seule occurrence, dans la zone Date , entrez la date à laquelle la planification du travail est exécutée. Dans la zone Heure , entrez l'heure à laquelle la planification du travail sera exécutée. Entrez l'heure, les minutes et les secondes du jour, ainsi que AM ou PM.

    6. Sous Résumé, dans Description, vérifiez que tous les paramètres de planification du travail sont corrects.

    7. Sélectionnez OK.

    Après avoir renseigné cette page, sélectionnez Suivant.

  7. Dans la page Vérifier le résumé , sous Vérifier vos sélections, développez toutes les options disponibles pour vérifier que tous les paramètres de compression sont corrects. Si tout est conforme à vos attentes, sélectionnez Terminer.

  8. Sur la page Progression de l'Assistant Compression de données , surveillez les informations d'état relatives aux actions de l'Assistant Création de partition. Selon les options sélectionnées dans l'Assistant, la page de progression peut contenir une ou plusieurs actions. La zone supérieure affiche l'état global de l'Assistant et le nombre des messages d'état, d'erreur et d'avertissement qu'il a reçus.

    Les options suivantes sont disponibles sur la page Progression de l'Assistant Compression de données :

    • Détails

      Indique l'action, l'état et tous les messages retournés suite à l'action entreprise par l'Assistant.

    • Action

      Indique le type et le nom de chaque action.

    • État

      Indique si l’action de l’Assistant dans son ensemble a retourné la valeur Réussite ou Échec.

    • Message

      Indique les messages d'erreur ou d'avertissement retournés par le processus.

    • Report

      Crée un rapport qui contient les résultats de l'Assistant Création de partition. Les options sont Afficher le rapport, Enregistrer le rapport dans un fichier, Copier le rapport dans le Presse-papierset Envoyer le rapport sous forme de courrier électronique.

    • Afficher le rapport

      Ouvre la boîte de dialogue Afficher le rapport , qui contient un rapport au format texte de la progression de l’Assistant Création de partition.

    • Enregistrer le rapport dans un fichier

      Ouvre la boîte de dialogue Enregistrer le rapport sous .

    • Copier le rapport dans le Presse-papiers

      Copie les résultats du rapport de progression de l’Assistant dans le Presse-papiers.

    • Envoyer le rapport sous forme de courrier électronique

      Copie les résultats du rapport de progression de l’Assistant dans un e-mail.

    Quand vous avez terminé, sélectionnez Fermer.

Utiliser Transact-SQL

SQL Server

Dans SQL Server, exécutez sp_estimate_data_compression_savings puis activez la compression pour la table ou l’index. Consultez les sections suivantes.

Activer la compression sur une table

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. L’exemple exécute d’abord la procédure sp_estimate_data_compression_savings stockée pour retourner la taille estimée de l’objet s’il devait utiliser le ROW paramètre de compression. L’exemple active ensuite la ROW compression sur toutes les partitions de la table spécifiée.

    USE AdventureWorks2022;
    GO
    EXEC sp_estimate_data_compression_savings 'Production', 'TransactionHistory', NULL, NULL, 'ROW';
    
    ALTER TABLE Production.TransactionHistory REBUILD PARTITION = ALL
    WITH (DATA_COMPRESSION = ROW);
    GO
    

Activer la compression sur un index

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. Dans l'exemple, l'affichage catalogue sys.indexes est d'abord interrogé pour retourner le nom et l' index_id de chaque index de la table Production.TransactionHistory . Il exécute ensuite la procédure sp_estimate_data_compression_savings stockée pour retourner la taille estimée de l’ID d’index spécifié s’il devait utiliser le PAGE paramètre de compression. Enfin, l’exemple reconstruit l’ID d’index 2 (IX_TransactionHistory_ProductID), en spécifiant la PAGE compression.

    USE AdventureWorks2022;
    GO
    SELECT name, index_id
    FROM sys.indexes
    WHERE OBJECT_NAME (object_id) = N'TransactionHistory';
    
    EXEC sp_estimate_data_compression_savings
        @schema_name = 'Production',
        @object_name = 'TransactionHistory',
        @index_id = 2,
        @partition_number = NULL,
        @data_compression = 'PAGE';
    
    ALTER INDEX IX_TransactionHistory_ProductID ON Production.TransactionHistory REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);
    GO
    

Sur Azure SQL Database

Azure SQL Database ne prend pas en charge la sp_estimate_data_compression_savings procédure stockée. Les scripts suivants activent la compression sans estimer le montant de compression.

Activer la compression sur une table

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. L’exemple active la ROW compression sur toutes les partitions de la table spécifiée.

    USE AdventureWorks2022;
    GO
    
    ALTER TABLE Production.TransactionHistory REBUILD PARTITION = ALL
    WITH (DATA_COMPRESSION = ROW);
    GO
    

Activer la compression sur un index

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. Dans l'exemple, l'affichage catalogue sys.indexes est d'abord interrogé pour retourner le nom et l' index_id de chaque index de la table Production.TransactionHistory . Enfin, l’exemple reconstruit l’ID d’index 2 (IX_TransactionHistory_ProductID), en spécifiant la PAGE compression.

    USE AdventureWorks2022;
    GO
    SELECT name, index_id
    FROM sys.indexes
    WHERE OBJECT_NAME (object_id) = N'TransactionHistory';
    
    ALTER INDEX IX_TransactionHistory_ProductID ON Production.TransactionHistory REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);
    GO
    

Pour plus d’informations, consultez ALTER TABLE (Transact-SQL) et ALTER INDEX (Transact-SQL).

Voir aussi