Data CompressionData Compression

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2016)ouiAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL Server 2016SQL Server 2016 et Base de données Azure SQLAzure SQL Database prennent en charge la compression de page et de ligne pour les tables et les index rowstore, et prennent en charge la compression columnstore et d’archivage columnstore pour les tables et les index columnstore. support row and page compression for rowstore tables and indexes, and supports columnstore and columnstore archival compression for columnstore tables and indexes.

Pour les tables et les index rowstore, utilisez la fonctionnalité de compression de données afin de réduire la taille de la base de données.For rowstore tables and indexes, use the data compression feature to help reduce the size of the database. Outre les économies d'espace, la compression des données peut améliorer les performances des charges de travail nécessitant de nombreuses E/S, car les données sont stockées dans beaucoup moins de pages et les requêtes doivent lire moins pages sur le disque.In addition to saving space, data compression can help improve performance of I/O intensive workloads because the data is stored in fewer pages and queries need to read fewer pages from disk. Toutefois, des ressources processeur supplémentaires sont nécessaires sur le serveur de base de données pour compresser et décompresser les données, alors que les données sont échangées avec l'application.However, extra CPU resources are required on the database server to compress and decompress the data, while data is exchanged with the application. La compression des lignes et des pages peut être configurée pour les objets de base de données suivants :You can configure row and page compression on the following database objects:

  • Une table entière stockée en tant que segment de mémoire.A whole table that is stored as a heap.

  • Une table entière stockée en tant qu'index cluster.A whole table that is stored as a clustered index.

  • Un index non cluster entier.A whole nonclustered index.

  • Une vue indexée entière.A whole indexed view.

  • Pour les tables et les index partitionnés, l'option de compression peut être configurée pour chaque partition et les différentes partitions d'un objet n'ont pas le même paramètre de compression.For partitioned tables and indexes, you can configure the compression option for each partition, and the various partitions of an object do not have to have the same compression setting.

    Pour les tables et les index columnstore, tous utilisent toujours la compression columnstore et celle-ci n'est pas configurable par l'utilisateur.For columnstore tables and indexes, all columnstore tables and indexes always use columnstore compression and this is not user configurable. Utilisez la compression d'archivage columnstore pour limiter davantage la taille des données dans les cas où vous pouvez supporter du temps et des ressources processeur supplémentaires pour stocker et récupérer les données.Use columnstore archival compression to further reduce the data size for situations when you can afford extra time and CPU resources to store and retrieve the data. La compression d'archivage columnstore peut être configurée pour les objets de base de données suivants :You can configure columnstore archival compression on the following database objects:

  • Une table columnstore entière ou un index cluster columnstore entier.A whole columnstore table or a whole clustered columnstore index. Étant donné qu'une table columnstore est stockée en tant qu'index cluster columnstore, les deux méthodes ont les mêmes résultats.Since a columnstore table is stored as a clustered columnstore index, both approaches have the same results.

  • Un index columnstore non cluster entier.A whole nonclustered columnstore index.

  • Pour les tables et les index columnstore partitionnés, l'option de compression d'archivage peut être configurée pour chaque partition et les différentes partitions d'un objet n'ont pas le même paramètre de compression d'archivage.For partitioned columnstore tables and columnstore indexes, you can configure the archival compression option for each partition, and the various partitions do not have to have the same archival compression setting.

Note

Les données peuvent également être compressées à l’aide du format d’algorithme GZIP.Data can also be compressed using the GZIP algorithm format. Cette étape supplémentaire se révèle particulièrement adaptée pour la compression de portions de données lors de l’archivage d’anciennes données à des fins de stockage à long terme.This is an additional step and is most suitable for compressing portions of the data when archiving old data for long term storage. Les données compressées à l’aide de la fonction COMPRESS ne sont pas indexables.Data compressed using the COMPRESS function cannot be indexed. Pour plus d’informations, consultez COMPRESS (Transact-SQL).For more information, see COMPRESS (Transact-SQL).

Considérations liées à l'utilisation de compression de page et de ligneConsiderations for When You Use Row and Page Compression

En cas d'utilisation de la compression de page et de ligne, assurez-vous de prendre en compte les considérations suivantes :When you use row and page compression, be aware the following considerations:

  • Les détails de la compression des données sont susceptibles de changer sans information préalable dans les Service Packs ou les versions ultérieures.The details of data compression are subject to change without notice in service packs or subsequent releases.

  • La compression est disponible dans Base de données Azure SQLAzure SQL DatabaseCompression is available in Base de données Azure SQLAzure SQL Database

  • La compression est disponible dans chaque édition de SQL ServerSQL Server.Compression is not available in every edition of SQL ServerSQL Server. Pour plus d’informations, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2016.For more information, see Features Supported by the Editions of SQL Server 2016.

  • La compression n'est pas disponible pour les tables système.Compression is not available for system tables.

  • La compression permet de stocker davantage de lignes dans une page, mais elle ne modifie pas la taille maximale des lignes d'une table ou d'un index.Compression can allow more rows to be stored on a page, but does not change the maximum row size of a table or index.

  • Une table ne peut pas être activée pour la compression lorsque la taille de ligne maximale plus la charge mémoire de compression dépasse la taille de ligne maximale de 8 060 octets.A table cannot be enabled for compression when the maximum row size plus the compression overhead exceeds the maximum row size of 8060 bytes. Par exemple, une table qui a les colonnes c1char(8000) et c2char(53) ne peut pas être compressée en raison de la charge de compression supplémentaire.For example, a table that has the columns c1char(8000) and c2char(53) cannot be compressed because of the additional compression overhead. Lorsque le format de stockage VarDecimal est utilisé, le contrôle de taille de ligne est effectué lorsque le format est activé.When the vardecimal storage format is used, the row-size check is performed when the format is enabled. Pour la compression de ligne et de page, le contrôle de taille de ligne est effectué lorsque l'objet est compressé initialement, puis vérifié à mesure que chaque ligne est insérée ou modifiée.For row and page compression, the row-size check is performed when the object is initially compressed, and then checked as each row is inserted or modified. La compression met en vigueur les deux règles suivantes :Compression enforces the following two rules:

    • Une mise à jour d'un type de longueur fixe doit toujours réussir.An update to a fixed-length type must always succeed.

    • La désactivation de la compression de données doit toujours réussir.Disabling data compression must always succeed. Même si la ligne compressée est adaptée à la taille de la page, ce qui signifie qu'elle est inférieure à 8 060 octets, SQL ServerSQL Server empêche les mises à jour qui ne seraient pas adaptées à la taille de la ligne lorsqu'elle est décompressée.Even if the compressed row fits on the page, which means that it is less than 8060 bytes; SQL ServerSQL Server prevents updates that would not fit on the row when it is uncompressed.

  • Lorsqu'une liste de partitions est spécifiée, le type de compression peut être défini sur ROW, PAGE ou NONE sur chacune des partitions.When a list of partitions is specified, the compression type can be set to ROW, PAGE, or NONE on individual partitions. Si la liste de partitions n'est pas spécifiée, toutes les partitions sont définies avec la propriété de compression de données spécifiée dans l'instruction.If the list of partitions is not specified, all partitions are set with the data compression property that is specified in the statement. Lorsqu'une table ou un index est créé, la compression de données est définie sur NONE, sauf indication contraire.When a table or index is created, data compression is set to NONE unless otherwise specified. Lorsqu'une table est modifiée, la compression existante est conservée, sauf indication contraire.When a table is modified, the existing compression is preserved unless otherwise specified.

  • Si vous spécifiez une liste de partitions ou une partition hors limites, une erreur est générée.If you specify a list of partitions or a partition that is out of range, an error will be generated.

  • Les index non cluster n'héritent pas de la propriété de compression de la table.Nonclustered indexes do not inherit the compression property of the table. Pour compresser des index, vous devez définir explicitement la propriété de compression des index.To compress indexes, you must explicitly set the compression property of the indexes. Par défaut, le paramètre de compression des index est défini sur NONE lorsque l'index est créé.By default, the compression setting for indexes will set to NONE when the index is created.

  • Lorsqu'un index cluster est créé sur un segment de mémoire, l'index cluster hérite de l'état de compression du segment, à moins qu'un autre état de compression soit spécifié.When a clustered index is created on a heap, the clustered index inherits the compression state of the heap unless an alternative compression state is specified.

  • Lorsqu'un segment de mémoire est configuré pour la compression de niveau page, les pages reçoivent la compression de niveau page uniquement des manières suivantes :When a heap is configured for page-level compression, pages receive page-level compression only in the following ways:

    • Les données pour lesquelles l'optimisation en bloc est activée sont importées.Data is bulk imported with bulk optimizations enabled.

    • Les données sont insérées via la syntaxe INSERT INTO... Syntaxe WITH (TABLOCK) et la table n'a pas d'index non-cluster.Data is inserted using INSERT INTO ... WITH (TABLOCK) syntax and the table does not have a nonclustered index.

    • Une table est reconstruite en exécutant l'instruction ALTER TABLE... REBUILD avec l'option de compression PAGE.A table is rebuilt by executing the ALTER TABLE ... REBUILD statement with the PAGE compression option.

  • Les changements de page alloués dans un segment de mémoire dans le cadre des opérations DML n'utiliseront pas la compression PAGE tant que le segment de mémoire n'est pas reconstruit.New pages allocated in a heap as part of DML operations will not use PAGE compression until the heap is rebuilt. Reconstruisez le segment de mémoire en supprimant puis en réappliquant la compression, ou en créant et en supprimant un index cluster.Rebuild the heap by removing and reapplying compression, or by creating and removing a clustered index.

  • La modification du paramètre de compression d'un segment de mémoire nécessite la reconstruction de tous les index non cluster sur la table afin qu'ils aient des pointeurs vers les nouveaux emplacements de ligne dans le segment de mémoire.Changing the compression setting of a heap requires all nonclustered indexes on the table to be rebuilt so that they have pointers to the new row locations in the heap.

  • Vous pouvez activer ou désactiver la compression ROW ou PAGE en ligne ou hors connexion.You can enable or disable ROW or PAGE compression online or offline. L'activation de la compression sur un segment de mémoire est mono-thread pour une opération en ligne.Enabling compression on a heap is single threaded for an online operation.

  • L'espace disque nécessaire pour activer ou désactiver la compression de ligne ou de page est le même que pour créer ou reconstruire un index.The disk space requirements for enabling or disabling row or page compression are the same as for creating or rebuilding an index. Pour les données partitionnées, vous pouvez réduire l'espace requis en activant ou désactivant la compression pour une partition à la fois.For partitioned data, you can reduce the space that is required by enabling or disabling compression for one partition at a time.

  • Pour déterminer l'état de compression des partitions dans une table partitionnée, interrogez la colonne data_compression de l'affichage catalogue sys.partitions.To determine the compression state of partitions in a partitioned table, query the data_compression column of the sys.partitions catalog view.

  • Lorsque vous compressez des index, les pages de niveau feuille peuvent être compressées avec la compression de ligne et de page.When you are compressing indexes, leaf-level pages can be compressed with both row and page compression. Les pages de niveau non feuille ne reçoivent pas de compression de page.Non–leaf-level pages do not receive page compression.

  • À cause de leur taille, les types de données de grande valeur sont quelquefois stockés séparément des données de ligne normales sur des pages à fonction spéciale.Because of their size, large-value data types are sometimes stored separately from the normal row data on special purpose pages. La compression des données n'est pas disponible pour les données stockées séparément.Data compression is not available for the data that is stored separately.

  • Les tables qui implémentait le format de stockage VarDecimal dans SQL Server 2005SQL Server 2005 conservent ce paramètre en cas de mise à niveau.Tables which implemented the vardecimal storage format in SQL Server 2005SQL Server 2005 will retain that setting when upgraded. Vous pouvez appliquer la compression de ligne à une table qui a le format de stockage VarDecimal.You can apply row compression to a table that has the vardecimal storage format. Toutefois, la compression de ligne étant un sur-ensemble du format de stockage VarDecimal, il n'y a aucune raison de conserver le format de stockage VarDecimal.However, because row compression is a superset of the vardecimal storage format, there is no reason to retain the vardecimal storage format. Les valeurs décimales ne bénéficient d'aucune compression supplémentaire lorsque vous combinez le format de stockage VarDecimal avec la compression de ligne.Decimal values gain no additional compression when you combine the vardecimal storage format with row compression. Vous pouvez appliquer la compression de page à une table qui a le format de stockage VarDecimal ; toutefois, les colonnes au format de stockage VarDecimal ne bénéficieront probablement pas d'une compression supplémentaire.You can apply page compression to a table that has the vardecimal storage format; however, the vardecimal storage format columns probably will not achieve additional compression.

    Note

    SQL Server 2016SQL Server 2016 prend en charge le format de stockage VarDecimal ; toutefois, la compression au niveau ligne accomplissant les mêmes objectifs, le format de stockage VarDecimal est déconseillé. supports the vardecimal storage format; however, because row-level compression achieves the same goals, the vardecimal storage format is deprecated. Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

À l'aide de la compression Columnstore et de la compression d'archivage ColumnstoreUsing Columnstore and Columnstore Archive Compression

||
|-|
|S’applique à: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 jusqu’à la version actuelle), Base de données Azure SQLAzure SQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 through current version), Base de données Azure SQLAzure SQL Database.|

Principes de baseBasics

Les tables et les index columnstore sont toujours enregistrés avec la compression columnstore.Columnstore tables and indexes are always stored with columnstore compression. Limitez encore davantage la taille des données columnstore en configurant une compression supplémentaire appelée compression d'archivage.You can further reduce the size of columnstore data by configuring an additional compression called archival compression. Pour exécuter la compression d'archivage, SQL ServerSQL Server exécute l'algorithme de compression Microsoft XPRESS sur les données.To perform archival compression, SQL ServerSQL Server runs the Microsoft XPRESS compression algorithm on the data. Ajoutez ou supprimez la compression d'archivage en utilisant les types de compression de données suivants :Add or remove archival compression by using the following data compression types:

  • Utilisez la compression des données COLUMNSTORE_ARCHIVE pour compresser les données columnstore au moyen de la compression d’archivage.Use COLUMNSTORE_ARCHIVE data compression to compress columnstore data with archival compression.

  • Utilisez la compression des données COLUMNSTORE pour décompresser la compression d'archivage.Use COLUMNSTORE data compression to decompress archival compression. Les données résultantes continuent à être compressées au moyen de la compression columnstore.This resulting data will continue to be compressed with columnstore compression.

    Pour ajouter la compression d’archivage, utilisez ALTER TABLE (Transact-SQL) ou ALTER INDEX (Transact-SQL) avec l’option REBUILD et DATA COMPRESSION = COLUMNSTORE.To add archival compression, use ALTER TABLE (Transact-SQL) or ALTER INDEX (Transact-SQL) with the REBUILD option and DATA COMPRESSION = COLUMNSTORE.

    Exemples :Examples:

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  COLUMNSTORE_ARCHIVE) ;  

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (DATA_COMPRESSION =  COLUMNSTORE_ARCHIVE) ;  

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (DATA_COMPRESSION =  COLUMNSTORE_ARCHIVE ON PARTITIONS (2,4)) ;  

Pour supprimer la compression d’archivage et restaurer les données sur la compression columnstoue, utilisez ALTER TABLE (Transact-SQL) ou ALTER INDEX (Transact-SQL) avec l’option REBUILD et DATA COMPRESSION = COLUMNSTORE.To remove archival compression and restore the data to columnstore compression, use ALTER TABLE (Transact-SQL) or ALTER INDEX (Transact-SQL) with the REBUILD option and DATA COMPRESSION = COLUMNSTORE.

Exemples :Examples:

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  COLUMNSTORE) ;  

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (DATA_COMPRESSION =  COLUMNSTORE) ;  

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (DATA_COMPRESSION =  COLUMNSTORE ON PARTITIONS (2,4) ) ;  

L'exemple suivant définit la compression des données à columnstore sur certaines partitions, et à archivage columnstore sur d'autres.This next example sets the data compression to columnstore on some partitions, and to columnstore archival on other partitions.

ALTER TABLE ColumnstoreTable1   
REBUILD PARTITION = ALL WITH (  
    DATA_COMPRESSION =  COLUMNSTORE ON PARTITIONS (4,5),  
    DATA COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (1,2,3)  
) ;  

PerformancePerformance

La compression des index columnstore avec compression d'archivage affecte les performances des index par rapport aux index columnstore sans compression d'archivage.Compressing columnstore indexes with archival compression will cause the index to perform slower than columnstore indexes that do not have the archival compression. Utilisez la compression d'archivage uniquement lorsque vous pouvez vous permettre d'utiliser du temps et les ressources supplémentaires pour compresser et récupérer les données.Use archival compression only when you can afford to use extra time and CPU resources to compress and retrieve the data.

La baisse des performances offre l'avantage d'un stockage réduit, ce qui est utile pour les données auxquelles vous n'accédez pas fréquemment.The benefit of slower performance is reduced storage which is useful for data that is not frequently accessed. Par exemple, si vous disposez d'une partition pour chaque mois de données, et la majeure partie de votre activité est réalisée au cours des mois les plus récents, vous pouvez archiver les mois antérieurs afin de réduire les besoins de stockage.For example, if you have a partition for each month of data, and most of your activity is for the most recent months, you could archive older months to reduce the storage requirements.

MétadonnéesMetadata

Les vues système suivantes contiennent des informations sur la compression de données pour les index cluster :The following system views contain information about data compression for clustered indexes:

Impact de la compression sur les tables et les index partitionnésHow Compression Affects Partitioned Tables and Indexes

Lorsque vous utilisez la compression des données avec des tables et des index partitionnés, assurez-vous de prendre en compte les considérations suivantes :When you use data compression with partitioned tables and indexes, be aware of the following considerations:

  • Lorsque des partitions sont fractionnées à l'aide de l'instruction ALTER PARTITION, les deux partitions héritent de l'attribut de compression des données de la partition d'origine.When partitions are split by using the ALTER PARTITION statement, both partitions inherit the data compression attribute of the original partition.

  • Lorsque deux partitions sont fusionnées, la partition résultante hérite de l'attribut de compression des données de la partition de destination.When two partitions are merged, the resultant partition inherits the data compression attribute of the destination partition.

  • Pour changer une partition, la propriété de compression des données de la partition doit correspondre à la propriété de compression de la table.To switch a partition, the data compression property of the partition must match the compression property of the table.

  • Il existe deux variantes de syntaxe que vous pouvez utiliser pour modifier la compression d'une table ou d'un index partitionné :There are two syntax variations that you can use to modify the compression of a partitioned table or index:

    • La syntaxe suivante reconstruit uniquement la partition référencée :The following syntax rebuilds only the referenced partition:

      ALTER TABLE <table_name>   
      REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  <option>)  
      
    • La syntaxe suivante reconstruit la table entière en utilisant le paramètre de compression existant pour toute partition qui n'est pas référencée :The following syntax rebuilds the whole table by using the existing compression setting for any partitions that are not referenced:

      ALTER TABLE <table_name>   
      REBUILD PARTITION = ALL   
      WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(<range>),  
      ... )  
      

      Les index partitionnés suivent le même principe à l'aide de l'instruction ALTER INDEX.Partitioned indexes follow the same principle using ALTER INDEX.

  • Lorsqu'un index cluster est supprimé, les partitions des segments de mémoire correspondants conservent leur paramètre de compression des données, à moins que le schéma de partitionnement soit modifié.When a clustered index is dropped, the corresponding heap partitions retain their data compression setting unless the partitioning scheme is modified. Si le schéma de partitionnement est modifié, toutes les partitions sont reconstruites dans un état non compressé.If the partitioning scheme is changed, all partitions are rebuilt to an uncompressed state. Pour supprimer un index cluster et modifier le schéma de partitionnement, vous devez effectuer les opérations suivantes :To drop a clustered index and change the partitioning scheme requires the following steps:

    1. supprimer l'index cluster ;Drop the clustered index.

    2. modifier la table en utilisant l'option ALTER TABLE ... REBUILD ... qui spécifie l'option de compression.Modify the table by using the ALTER TABLE ... REBUILD ... option that specifies the compression option.

      La suppression d'un index cluster HORS CONNEXION est une opération très rapide, car seuls les niveaux supérieurs des index clusters sont supprimés.To drop a clustered index OFFLINE is a very fast operation, because only the upper levels of clustered indexes are removed. Lorsqu'un index cluster est supprimé EN LIGNE, SQL ServerSQL Server doit reconstruire le segment de mémoire deux fois, une fois pour l'étape 1 et une fois pour l'étape 2.When a clustered index is dropped ONLINE, SQL ServerSQL Server must rebuild the heap two times, once for step 1 and once for step 2.

Impact de la compression sur la réplicationHow Compression Affects Replication

||
|-|
|S’applique à: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 jusqu’à version actuelle).Applies to: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 through current version).|
Lorsque vous utilisez la compression des données avec la réplication, assurez-vous de prendre en compte les considérations suivantes :When you are using data compression with replication, be aware of the following considerations:

  • Lorsque l'Agent d'instantané génère le script de schéma initial, le nouveau schéma utilise les mêmes paramètres de compression pour la table et ses index.When the Snapshot Agent generates the initial schema script, the new schema will use the same compression settings for both the table and its indexes. La compression ne peut être activée simplement sur la table et pas sur l'index.Compression cannot be enabled on just the table and not the index.

  • Pour la réplication transactionnelle, l'option de schéma d'article détermine les objets et propriétés dépendants qui doivent être écrits.For transactional replication the article schema option determines what dependent objects and properties have to be scripted. Pour plus d’informations, consultez sp_addarticle.For more information, see sp_addarticle.

    L'Agent de distribution ne vérifie pas les Abonnés de bas niveau lorsqu'il applique des scripts.The Distribution Agent does not check for down-level Subscribers when it applies scripts. Si la réplication de compression est sélectionnée, la création de la table sur des Abonnés de bas niveau échoue.If the replication of compression is selected, creating the table on down-level Subscribers will fail. Dans le cas d'une topologie mixte, n'activez pas la réplication de compression.In the case of a mixed topology, do not enable the replication of compression.

  • Pour la réplication de fusion, le niveau de compatibilité de la publication remplace les options de schéma et détermine les objets de schéma qui seront écrits.For merge replication, publication compatibility level overrides the schema options and determines the schema objects that will be scripted.

    Dans le cas d'une topologie mixte, s'il n'est pas obligatoire de prendre en charge les nouvelles options de compression, le niveau de compatibilité de la publication doit être défini sur la version de l'Abonné de bas niveau.In the case of a mixed topology, if it is not required to support the new compression options, the publication compatibility level should be set to the down-level Subscriber version. Si la prise en charge est requise, compressez les tables sur l'Abonné après qu'elles ont été créées.If it is required, compress tables on the Subscriber after they have been created.

    Le tableau suivant illustre les paramètres de réplication qui contrôlent la compression pendant la réplication.The following table shows replication settings that control compression during replication.

Intention de l'utilisateurUser intent Répliquer le schéma de partition pour une table ou un indexReplicate partition scheme for a table or index Répliquer les paramètres de compressionReplicate compression settings Comportement de scriptScripting behavior
Répliquer le schéma de partition et activer la compression sur l'Abonné sur la partition.To replicate the partition scheme and enable compression on the Subscriber on the partition. TrueTrue TrueTrue Inclut dans le script le schéma de partition et les paramètres de compression.Scripts both the partition scheme and the compression settings.
Répliquer le schéma de partition mais ne pas compresser les données sur l'Abonné.To replicate the partition scheme but not compress the data on the Subscriber. TrueTrue FalseFalse Exclut le schéma de partition du script, mais pas les paramètres de compression pour la partition.Scripts out the partition scheme but not the compression settings for the partition.
Ne pas répliquer le schéma de partition et ne pas compresser les données sur l'Abonné.To not replicate the partition scheme and not compress the data on the Subscriber. FalseFalse FalseFalse Exclut du script la partition et les paramètres de compression.Does not script partition or compression settings.
Compresser la table sur l'Abonné si toutes les partitions sont compressées sur le serveur de publication, mais ne pas répliquer le schéma de partition.To compress the table on the Subscriber if all the partitions are compressed on the Publisher, but not replicate the partition scheme. FalseFalse TrueTrue Vérifie si toutes les partitions sont activées pour la compression.Checks if all the partitions are enabled for compression.

Exclut la compression du script au niveau de la table.Scripts out compression at the table level.

Impact de la compression sur les autres composants SQL ServerHow Compression Affects Other SQL Server Components

||
|-|
|S’applique à: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 jusqu’à version actuelle).Applies to: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 through current version).|

La compression se produit dans le moteur de stockage et les données sont présentées à la plupart des autres composants de SQL ServerSQL Server dans un état non compressé.Compression occurs in the storage engine and the data is presented to most of the other components of SQL ServerSQL Server in an uncompressed state. Cela limite les effets de la compression sur les autres composants de la manière suivante :This limits the effects of compression on the other components to the following:

  • Opérations d'importation et d'exportation en blocBulk import and export operations

    Lorsque des données sont exportées, même au format natif, les données sont sorties au format de ligne non compressé.When data is exported, even in native format, the data is output in the uncompressed row format. La taille du fichier de données exporté peut par conséquent être beaucoup plus grande que les données sources.This can cause the size of exported data file to be significantly larger than the source data.

    Lorsque des données sont importées, si la table cible a été activée pour la compression, les données sont converties par le moteur de stockage au format de ligne compressé.When data is imported, if the target table has been enabled for compression, the data is converted by the storage engine into compressed row format. Cela peut provoquer une augmentation de l'utilisation de l'UC, par rapport à une importation des données dans une table non compressée.This can cause increased CPU usage compared to when data is imported into an uncompressed table.

    Lorsque des données sont importées en bloc dans un segment de mémoire avec la compression de page, l'opération d'importation en bloc tente de compresser les données avec la compression de page lorsque les données sont insérées.When data is bulk imported into a heap with page compression, the bulk import operation will try to compress the data with page compression when the data is inserted.

  • La compression n'affecte pas la sauvegarde et la restauration.Compression does not affect backup and restore.

  • La compression n'affecte pas la copie des journaux de transaction.Compression does not affect log shipping.

  • La compression de données est incompatible avec les colonnes éparses.Data compression is incompatible with sparse columns. Par conséquent, les tables contenant des colonnes éparses ne peuvent pas être compressées et les colonnes éparses ne peuvent pas être ajoutées aux tables compressées.Therefore, tables containing sparse columns cannot be compressed nor can sparse columns be added to a compressed table.

  • L'activation de la compression peut provoquer la modification des plans de requêtes, car les données sont stockées avec un nombre différent de pages et de lignes par page.Enabling compression can cause query plans to change because the data is stored using a different number of pages and number of rows per page.

Voir aussiSee Also

Implémentation de la compression de ligne Row Compression Implementation
Implémentation de la compression de page Page Compression Implementation
Implémentation de la compression Unicode Unicode Compression Implementation
CREATE PARTITION SCHEME (Transact-SQL) CREATE PARTITION SCHEME (Transact-SQL)
CREATE PARTITION FUNCTION (Transact-SQL) CREATE PARTITION FUNCTION (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL) CREATE INDEX (Transact-SQL)
ALTER INDEX (Transact-SQL) ALTER INDEX (Transact-SQL)