Data CompressionData Compression

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL ServerSQL Server y Base de datos SQL de AzureAzure SQL Database admiten la compresión de fila y de página para las tablas e índices de almacén de filas, así como la compresión de almacén de columnas y de archivo de almacén de columnas para las tablas e índices de almacén de columnas.and Base de datos SQL de AzureAzure SQL Database support row and page compression for rowstore tables and indexes, and supports columnstore and columnstore archival compression for columnstore tables and indexes.

Para las tablas e índices de almacén de filas, use la característica de compresión de datos como ayuda para reducir el tamaño de la base de datos.For rowstore tables and indexes, use the data compression feature to help reduce the size of the database. Además de ahorrar espacio, la compresión de datos puede contribuir a mejorar el rendimiento de las cargas de trabajo que hacen un uso intensivo de las operaciones de E/S porque los datos se almacenan en menos páginas y las consultas deben leer menos páginas del disco.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. No obstante, se requieren recursos de CPU adicionales en el servidor de base de datos para comprimir y descomprimir los datos, mientras los datos se intercambian con la aplicación.However, extra CPU resources are required on the database server to compress and decompress the data, while data is exchanged with the application. La compresión de fila y de página se puede configurar en los objetos de base de datos siguientes:You can configure row and page compression on the following database objects:

  • Una tabla entera que está almacenada como un montón.A whole table that is stored as a heap.
  • Una tabla entera que está almacenada como un índice clúster.A whole table that is stored as a clustered index.
  • Un índice no clúster entero.A whole nonclustered index.
  • Una vista indizada entera.A whole indexed view.
  • Para las tablas e índices con particiones, la opción de compresión se puede configurar para cada partición y las diferentes particiones de un objeto no tienen por qué tener la misma configuración de compresión.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.

Para las tablas e índices de almacén de columnas, todos los índices y tablas de almacén de columnas usan siempre la compresión de almacén de columnas, que no es configurable por el usuario.For columnstore tables and indexes, all columnstore tables and indexes always use columnstore compression and this is not user configurable. Use la compresión de archivo de almacén de columnas para reducir más el tamaño de datos en los casos en que pueda permitirse emplear tiempo y recursos de CPU adicionales para almacenar y recuperar los datos.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 compresión de archivo de almacén de columnas se puede configurar en los objetos de base de datos siguientes:You can configure columnstore archival compression on the following database objects:

  • Una tabla entera de almacén de columnas o un índice entero de almacén de columnas en clúster.A whole columnstore table or a whole clustered columnstore index. Puesto que una tabla de almacén de columnas se almacena como índice de almacén de columnas en clúster, ambos métodos tienen los mismos resultados.Since a columnstore table is stored as a clustered columnstore index, both approaches have the same results.
  • Un índice entero de almacén de columnas no clúster.A whole nonclustered columnstore index.
  • Para las tablas de almacén de columnas y los índices de almacén de columnas con particiones, la opción de compresión de archivo se puede configurar para cada partición y las diferentes particiones no tienen por qué tener la misma configuración de compresión de archivo.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.

Nota

También es posible comprimir los datos con el formato de algoritmo GZIP.Data can also be compressed using the GZIP algorithm format. Este paso es adicional y está recomendado para comprimir partes de los datos cuando se archivan datos antiguos a fin de almacenarlos a largo plazo.This is an additional step and is most suitable for compressing portions of the data when archiving old data for long-term storage. Los datos comprimidos con la función de COMPRESS no pueden indexarse.Data compressed using the COMPRESS function cannot be indexed. Para obtener más información, vea COMPRESS (Transact-SQL).For more information, see COMPRESS (Transact-SQL).

Consideraciones sobre el uso de la compresión de filas y páginasConsiderations for When You Use Row and Page Compression

Cuando utilice la compresión de filas y páginas, tenga en cuenta las consideraciones siguientes:When you use row and page compression, be aware the following considerations:

  • Los detalles de la compresión de datos se pueden cambiar sin previo aviso en los Service Pack o versiones posteriores.The details of data compression are subject to change without notice in service packs or subsequent releases.

  • La compresión está disponible en Base de datos SQL de AzureAzure SQL DatabaseCompression is available in Base de datos SQL de AzureAzure SQL Database

  • La compresión no está disponible en todas las ediciones de SQL ServerSQL Server.Compression is not available in every edition of SQL ServerSQL Server. Para obtener más información, vea Características compatibles con las ediciones de SQL Server 2016.For more information, see Features Supported by the Editions of SQL Server 2016.

  • La compresión no está disponible para las tablas del sistema.Compression is not available for system tables.

  • La compresión puede permitir que se almacenen más filas en una página, pero no cambia el tamaño máximo de filas de una tabla o índice.Compression can allow more rows to be stored on a page, but does not change the maximum row size of a table or index.

  • Una tabla no se puede habilitar para su compresión cuando el tamaño máximo de filas más la sobrecarga de compresión supera el tamaño máximo de filas de 8060 bytes.A table cannot be enabled for compression when the maximum row size plus the compression overhead exceeds the maximum row size of 8060 bytes. Por ejemplo, una tabla que tiene las columnas c1char(8000) y c2char(53) no se puede comprimir, dada la sobrecarga de compresión adicional.For example, a table that has the columns c1char(8000) and c2char(53) cannot be compressed because of the additional compression overhead. Cuando se utiliza el formato de almacenamiento vardecimal, la comprobación del tamaño de filas se realiza cuando se habilita el formato.When the vardecimal storage format is used, the row-size check is performed when the format is enabled. Para la compresión de filas y páginas, la comprobación del tamaño de filas se realiza cuando el objeto se comprime inicialmente, y después se comprueba cuando se inserta o modifica cada fila.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 compresión exige las dos reglas siguientes:Compression enforces the following two rules:

    • Una actualización a un tipo de longitud fija siempre debe tener éxito.An update to a fixed-length type must always succeed.
    • La deshabilitación de la compresión de datos siempre debe tener éxito.Disabling data compression must always succeed. Aunque la fila comprimida quepa en la página, lo que significa que tiene menos de 8060 bytes, SQL ServerSQL Server evita actualizaciones que no cabrían en la fila al descomprimirla.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.
  • Cuando se especifica una lista de particiones, el tipo de compresión se puede establecer en ROW, PAGE o NONE en particiones individuales.When a list of partitions is specified, the compression type can be set to ROW, PAGE, or NONE on individual partitions. Si no se especifica la lista de particiones, todas las particiones se establecen con la propiedad de compresión de datos que se especifica en la instrucción.If the list of partitions is not specified, all partitions are set with the data compression property that is specified in the statement. Cuando se crea una tabla o índice, la compresión de datos se establece en NONE, a menos que se especifique lo contrario.When a table or index is created, data compression is set to NONE unless otherwise specified. Cuando se modifica una tabla, se conserva la compresión existente, a menos que se especifique lo contrario.When a table is modified, the existing compression is preserved unless otherwise specified.

  • Si se especifica una partición o una lista de particiones que están fuera del intervalo, se genera un error.If you specify a list of partitions or a partition that is out of range, an error is generated.

  • Los índices no clúster no heredan la propiedad de compresión de la tabla.Nonclustered indexes do not inherit the compression property of the table. Para comprimir índices, se debe establecer explícitamente la propiedad de compresión de los índices.To compress indexes, you must explicitly set the compression property of the indexes. De forma predeterminada, el valor de compresión de índices se establece en NONE cuando se crea el índice.By default, the compression setting for indexes is set to NONE when the index is created.

  • Cuando se crea un índice clúster en un montón, el índice clúster hereda el estado de compresión del montón, a menos que se especifique otro estado de compresión.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.

  • Cuando un montón se configura para la compresión de nivel de página, las páginas solo reciben la compresión de nivel de página de las formas siguientes:When a heap is configured for page-level compression, pages receive page-level compression only in the following ways:

    • Los datos se importan de forma masiva con las optimizaciones masivas habilitadas.Data is bulk imported with bulk optimizations enabled.
    • Los datos se insertan utilizando la sintaxis INSERT INTO ... La sintaxis WITH (TABLOCK) y la tabla no tienen ningún índice no agrupado.Data is inserted using INSERT INTO ... WITH (TABLOCK) syntax and the table does not have a nonclustered index.
    • Una tabla se vuelve a generar ejecutando la instrucción ALTER TABLE... REBUILD con la opción de compresión PAGE.A table is rebuilt by executing the ALTER TABLE ... REBUILD statement with the PAGE compression option.
  • Las nuevas páginas asignadas en un montón como parte de las operaciones DML no usan la compresión PAGE hasta que se vuelve a generar el montón.New pages allocated in a heap as part of DML operations do not use PAGE compression until the heap is rebuilt. Para volver a generar el montón, quite y vuelva a aplicar la compresión, o cree y quite un índice clúster.Rebuild the heap by removing and reapplying compression, or by creating and removing a clustered index.

  • El cambio del valor de compresión de un montón requiere que todos los índices no clúster de la tabla se vuelvan a generar de modo que tengan punteros a las nuevas ubicaciones de fila en el montón.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.

  • Puede habilitar o deshabilitar la compresión ROW o PAGE conectado o sin conexión.You can enable or disable ROW or PAGE compression online or offline. La habilitación de la compresión en un montón es de un solo subproceso para una operación en línea.Enabling compression on a heap is single threaded for an online operation.

  • Los requisitos de espacio en disco para habilitar o deshabilitar la compresión de filas o páginas son los mismos que los necesarios para crear o volver a generar un índice.The disk space requirements for enabling or disabling row or page compression are the same as for creating or rebuilding an index. Para los datos con particiones, puede reducir el espacio que se requiere habilitando o deshabilitando la compresión para una partición cada vez.For partitioned data, you can reduce the space that is required by enabling or disabling compression for one partition at a time.

  • Para determinar el estado de compresión de particiones en una tabla con particiones, consulte la columna data_compression de la vista de catálogo sys.partitions.To determine the compression state of partitions in a partitioned table, query the data_compression column of the sys.partitions catalog view.

  • Cuando se comprimen índices, las páginas de nivel de hoja se pueden comprimir tanto con la compresión de filas como con la compresión de páginas.When you are compressing indexes, leaf-level pages can be compressed with both row and page compression. Las páginas que no están en el nivel hoja no reciben la compresión de páginas.Non-leaf-level pages do not receive page compression.

  • Debido a su tamaño, los tipos de datos de valores grandes suelen almacenarse independientemente de los datos de fila normales en páginas con un fin específico.Because of their size, large-value data types are sometimes stored separately from the normal row data on special purpose pages. La compresión de datos no está disponible para los datos que se almacenan independientemente.Data compression is not available for the data that is stored separately.

  • Las tablas que implementaron el formato de almacenamiento vardecimal en SQL Server 2005 (9.x)SQL Server 2005 (9.x) conservan ese valor cuando se actualizan.Tables that implemented the vardecimal storage format in SQL Server 2005 (9.x)SQL Server 2005 (9.x), retain that setting when upgraded. Puede aplicar la compresión de filas a una tabla que tenga el formato de almacenamiento vardecimal.You can apply row compression to a table that has the vardecimal storage format. Sin embargo, como la compresión de filas es un superconjunto del formato de almacenamiento vardecimal, no hay ninguna razón para conservar el formato de almacenamiento vardecimal.However, because row compression is a superset of the vardecimal storage format, there is no reason to retain the vardecimal storage format. Los valores decimales no obtienen una compresión adicional cuando se combina el formato de almacenamiento vardecimal con la compresión de filas.Decimal values gain no additional compression when you combine the vardecimal storage format with row compression. Puede aplicar la compresión de páginas a una tabla que tenga el formato de almacenamiento vardecimal; sin embargo, es probable que las columnas con formato de almacenamiento vardecimal no consigan una compresión adicional.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.

    Nota

    SQL ServerSQL Server admite el formato de almacenamiento vardecimal; sin embargo, como la compresión de nivel de fila consigue los mismos objetivos, el formato de almacenamiento vardecimal ha quedado desusado.supports the vardecimal storage format; however, because row-level compression achieves the same goals, the vardecimal storage format is deprecated. Esta característica está en modo de mantenimiento y es posible que no se incluya en una versión futura de Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Usar la compresión de almacén de columnas y de archivo de almacén de columnasUsing Columnstore and Columnstore Archive Compression

Se aplica a: SQL ServerSQL Server (desde SQL Server 2014 (12.x)SQL Server 2014 (12.x) hasta la versión actual), Base de datos SQL de AzureAzure SQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version), Base de datos SQL de AzureAzure SQL Database.

Conceptos básicosBasics

Las tablas y los índices de almacén de columnas siempre se almacenan con compresión de almacén de columnas.Columnstore tables and indexes are always stored with columnstore compression. El tamaño de los datos de almacén de columnas se puede reducir más configurando una compresión adicional denominada compresión de archivo.You can further reduce the size of columnstore data by configuring an additional compression called archival compression. Para realizar la compresión de archivo, SQL ServerSQL Server ejecuta el algoritmo de compresión de Microsoft XPRESS en los datos.To perform archival compression, SQL ServerSQL Server runs the Microsoft XPRESS compression algorithm on the data. La compresión de archivo se agrega o se quita mediante los tipos de compresión de datos siguientes:Add or remove archival compression by using the following data compression types:

  • Use la compresión de datos COLUMNSTORE_ARCHIVE para comprimir los datos de almacén de columnas con la compresión de archivo.Use COLUMNSTORE_ARCHIVE data compression to compress columnstore data with archival compression.
  • Use la compresión de datos de COLUMNSTORE para descomprimir la compresión de archivo.Use COLUMNSTORE data compression to decompress archival compression. Los datos resultantes siguen comprimiéndose con la compresión de almacén de columnas.The resulting data continue to be compressed with columnstore compression.

Para agregar la compresión de archivo, use ALTER TABLE (Transact-SQL) o ALTER INDEX (Transact-SQL) con la opción REBUILD y DATA COMPRESSION = COLUMNSTORE_ARCHIVE.To add archival compression, use ALTER TABLE (Transact-SQL) or ALTER INDEX (Transact-SQL) with the REBUILD option and DATA COMPRESSION = COLUMNSTORE_ARCHIVE.

Ejemplos: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)) ;  

Para quitar la compresión de archivo y restaurar los datos a la compresión de almacén de columnas, use ALTER TABLE (Transact-SQL) o ALTER INDEX (Transact-SQL) con la opción REBUILD y 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.

Ejemplos: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) ) ;  

En el ejemplo siguiente se establece la compresión de datos a almacén de columnas en algunas particiones y a archivo de almacén de columnas en otras particiones.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)  
) ;  

RendimientoPerformance

Al comprimir los índices de almacén de columnas con la compresión de archivo, el índice se ejecuta más lentamente que los índices de almacén de columnas que no tienen la compresión de archivo.Compressing columnstore indexes with archival compression, causes the index to perform slower than columnstore indexes that do not have the archival compression. Use la compresión de archivo solo cuando se puede permitirse emplear tiempo y recursos de CPU adicionales para comprimir y recuperar los datos.Use archival compression only when you can afford to use extra time and CPU resources to compress and retrieve the data.

La compresión de archivos ofrece la ventaja de que se reduce el almacenamiento, algo que resulta útil con los datos a los que no se accede con frecuencia.The benefit of archival compression, is reduced storage, which is useful for data that is not accessed frequently. Por ejemplo, si tiene una partición para cada mes de datos y la mayor parte de la actividad tiene lugar en los meses más recientes, podría archivar los meses más antiguos para reducir los requisitos de almacenamiento.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.

MetadatosMetadata

Las vistas del sistema siguientes contienen información sobre la compresión de datos para los índices clúster:The following system views contain information about data compression for clustered indexes:

El procedimiento sp_estimate_data_compression_savings (Transact-SQL) también se puede aplicar a los índices de almacén de columnas.The procedure sp_estimate_data_compression_savings (Transact-SQL) can also apply to columnstore indexes.

Cómo afecta la compresión a tablas e índices con particionesHow Compression Affects Partitioned Tables and Indexes

Cuando use la compresión de datos con tablas e índices con particiones, tenga en cuenta las consideraciones siguientes:When you use data compression with partitioned tables and indexes, be aware of the following considerations:

  • Cuando se divide una partición utilizando la instrucción ALTER PARTITION, ambas particiones heredan el atributo de compresión de datos de la partición original.When partitions are split by using the ALTER PARTITION statement, both partitions inherit the data compression attribute of the original partition.

  • Cuando se combinan dos particiones, la partición resultante hereda el atributo de compresión de datos de la partición de destino.When two partitions are merged, the resultant partition inherits the data compression attribute of the destination partition.

  • Para cambiar una partición, la propiedad de compresión de datos de la partición debe coincidir con la propiedad de compresión de la tabla.To switch a partition, the data compression property of the partition must match the compression property of the table.

  • Hay dos variaciones de sintaxis que se pueden utilizar para modificar la compresión de una tabla o índice con particiones:There are two syntax variations that you can use to modify the compression of a partitioned table or index:

    • La sintaxis siguiente vuelve a generar solo la partición a la que se hace referencia:The following syntax rebuilds only the referenced partition:
      ALTER TABLE <table_name>   
      REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  <option>)  
      
    • La sintaxis siguiente vuelve a generar la tabla completa utilizando el valor de compresión existente para las particiones a las que no se haga referencia: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>),  
      ... )  
      

    Los índices con particiones siguen el mismo principio mediante el uso de ALTER INDEX.Partitioned indexes follow the same principle using ALTER INDEX.

  • Cuando se quita un índice clúster, las particiones del montón correspondientes retienen su valor de compresión de datos, a menos que se modifique el esquema de partición.When a clustered index is dropped, the corresponding heap partitions retain their data compression setting unless the partitioning scheme is modified. Si se cambia el esquema de partición, todas las particiones se vuelven a generar en un estado sin comprimir.If the partitioning scheme is changed, all partitions are rebuilt to an uncompressed state. Para quitar un índice clúster y cambiar el esquema de partición es necesario realizar los pasos siguientes:To drop a clustered index and change the partitioning scheme requires the following steps:

    1. Quitar el índice clúster.Drop the clustered index.
    2. Modificar la tabla utilizando la opción ALTER TABLE ... REBUILD ... que especifica la opción de compresión.Modify the table by using the ALTER TABLE ... REBUILD ... option that specifies the compression option.

    La operación de quitar un índice clúster OFFLINE es muy rápida porque solo se quitan los niveles superiores de índices clústeres.To drop a clustered index OFFLINE is a very fast operation, because only the upper levels of clustered indexes are removed. Cuando se quita un índice clúster ONLINE, SQL ServerSQL Server debe volver a generar el montón dos veces, una vez para el paso 1 y otra para el paso 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.

Cómo afecta la compresión a la replicaciónHow Compression Affects Replication

Se aplica a: SQL ServerSQL Server (desde SQL Server 2014 (12.x)SQL Server 2014 (12.x) hasta la versión actual).Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version).
Cuando utilice la compresión de datos con replicación, tenga en cuenta las consideraciones siguientes:When you are using data compression with replication, be aware of the following considerations:

  • Cuando el Agente de instantáneas genera el script de esquema inicial, el nuevo esquema usa la misma configuración de compresión para la tabla y sus índices.When the Snapshot Agent generates the initial schema script, the new schema uses the same compression settings for both the table and its indexes. La compresión no se puede habilitar solo en la tabla y no en el índice.Compression cannot be enabled on just the table and not the index.
  • Para la replicación transaccional, la opción de esquema de artículo determina para qué propiedades y objetos dependientes se van a generar scripts.For transactional replication the article schema option determines what dependent objects and properties have to be scripted. Para obtener más información, vea sp_addarticle.For more information, see sp_addarticle.
    El Agente de distribución no comprueba los suscriptores de nivel inferior cuando aplica scripts.The Distribution Agent does not check for down-level Subscribers when it applies scripts. Si se selecciona la replicación de compresión, se produce un error al crear la tabla en los suscriptores de nivel inferior.If the replication of compression is selected, creating the table on down-level Subscribers fails. En el caso de una topología mixta, no se debe habilitar la replicación de compresión.In the case of a mixed topology, do not enable the replication of compression.
  • Para la replicación de mezcla, el nivel de compatibilidad de la publicación invalida las opciones de esquema y determina los objetos de esquema para los que se crean scripts.For merge replication, publication compatibility level overrides the schema options and determines the schema objects that are scripted.
    En el caso de una topología mixta, si no se requiere la admisión de las nuevas opciones de compresión, el nivel de compatibilidad de la publicación debe establecerse en la versión de suscriptor de nivel inferior.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. En caso de que se requiera, se deben comprimir las tablas en el suscriptor una vez creadas.If it is required, compress tables on the Subscriber after they have been created.

La tabla siguiente muestra los valores de replicación que controlan la compresión durante la replicación.The following table shows replication settings that control compression during replication.

Intento del usuarioUser intent Replicar el esquema de partición para una tabla o índiceReplicate partition scheme for a table or index Replicar los valores de compresiónReplicate compression settings Comportamiento de creación de scriptScripting behavior
Replicar el esquema de partición y habilitar la compresión en el suscriptor en la partición.To replicate the partition scheme and enable compression on the Subscriber on the partition. TrueTrue TrueTrue Se crean scripts tanto para el esquema de partición como para los valores de compresión.Scripts both the partition scheme and the compression settings.
Replicar el esquema de partición pero no comprimir los datos en el suscriptor.To replicate the partition scheme but not compress the data on the Subscriber. TrueTrue FalseFalse Se crean scripts para el esquema de partición pero no para los valores de compresión para la partición.Scripts out the partition scheme but not the compression settings for the partition.
No replicar el esquema de partición y no comprimir los datos en el suscriptor.To not replicate the partition scheme and not compress the data on the Subscriber. FalseFalse FalseFalse No se crean scripts para la partición o para los valores de compresión.Does not script partition or compression settings.
Comprimir la tabla en el suscriptor si todas las particiones se comprimen en el publicador, pero no replicar el esquema de partición.To compress the table on the Subscriber if all the partitions are compressed on the Publisher, but not replicate the partition scheme. FalseFalse TrueTrue Comprueba si todas las particiones están habilitadas para la compresión.Checks if all the partitions are enabled for compression.

Se crean scripts para la compresión en el nivel de tabla.Scripts out compression at the table level.

Cómo afecta la compresión a los demás componentes de SQL ServerHow Compression Affects Other SQL Server Components

Se aplica a: SQL ServerSQL Server (desde SQL Server 2014 (12.x)SQL Server 2014 (12.x) hasta la versión actual).Applies to: SQL ServerSQL Server ( SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version).

La compresión se produce en el motor de almacenamiento y los datos se presentan a la mayoría de los demás componentes de SQL ServerSQL Server en un estado sin comprimir.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. Esto limita los efectos de la compresión en los demás componentes para lo siguiente:This limits the effects of compression on the other components to the following:

  • Operaciones de exportación e importación masivasBulk import and export operations
    Cuando se exportan datos, incluso en formato nativo, los datos se envían en formato de fila sin comprimir.When data is exported, even in native format, the data is output in the uncompressed row format. Esto puede hacer que el tamaño del archivo de datos exportados sea significativamente mayor que el de los datos de origen.This can cause the size of exported data file to be significantly larger than the source data.
    Cuando se importan datos, si la tabla de destino se ha habilitado para la compresión, el motor de almacenamiento convierte los datos a formato de fila comprimida.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. Esto puede implicar un mayor uso de la CPU si se compara con la importación de datos en una tabla sin comprimir.This can cause increased CPU usage compared to when data is imported into an uncompressed table.
    Cuando los datos se importan en bloque a un montón con compresión de página, la operación se realiza al insertar los datos.When data is bulk imported into a heap with page compression, the bulk import operation tries to compress the data with page compression when the data is inserted.
  • La compresión no afecta a las acciones de copias de seguridad y restauración.Compression does not affect backup and restore.
  • La compresión no afecta al trasvase de registros.Compression does not affect log shipping.
  • La compresión de datos es incompatible con las columnas dispersas.Data compression is incompatible with sparse columns. Por consiguiente, las tablas que contienen columnas dispersas no pueden comprimirse y las columnas dispersas no se pueden agregar a una tabla comprimida.Therefore, tables containing sparse columns cannot be compressed nor can sparse columns be added to a compressed table.
  • Al habilitar la compresión, se puede hacer que los planes de consulta cambien porque los datos se almacenan utilizando un número diferente de páginas y de filas por cada página.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.

Consulte tambiénSee Also

Implementación de la compresión de fila Row Compression Implementation
Implementación de la compresión de página Page Compression Implementation
Implementación de la compresión 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)