Data CompressionData Compression

ESTE TÓPICO APLICA-SE A: simSQL Server (começando com o 2016)simBanco de Dados SQL do AzurenãoAzure SQL Data Warehouse nãoParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

O SQL Server 2016SQL Server 2016 e o Banco de dados SQL do AzureAzure SQL Database dão suporte à compactação de linhas e de páginas para tabelas e índices rowstore, e dão suporte a columnstore e à compactação de arquivamento columnstore para tabelas e índices columnstore. support row and page compression for rowstore tables and indexes, and supports columnstore and columnstore archival compression for columnstore tables and indexes.

Para tabelas e índices rowstore, use o recurso de compactação de dados para ajudar a reduzir o tamanho do banco de dados.For rowstore tables and indexes, use the data compression feature to help reduce the size of the database. Além de economizar espaço, a compactação de dados pode ajudar a aprimorar o desempenho de cargas de trabalho intensivas de E/S, pois os dados são armazenados em menos páginas e as consultas precisam ler menos páginas do 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 entanto, recursos extras de CPU são necessários no servidor de banco de dados para compactar e descompactar os dados, enquanto os dados são trocados com o aplicativo.However, extra CPU resources are required on the database server to compress and decompress the data, while data is exchanged with the application. Você pode configurar a compactação de linha e página nos seguintes objetos de banco de dados:You can configure row and page compression on the following database objects:

  • Uma tabela inteira que é armazenada como um heap.A whole table that is stored as a heap.

  • Uma tabela inteira que é armazenada como um índice clusterizado.A whole table that is stored as a clustered index.

  • Um índice não clusterizado inteiro.A whole nonclustered index.

  • Uma exibição indexada inteira.A whole indexed view.

  • Para tabelas e índices particionados, você pode configurar a opção de compactação para cada partição, e as várias partições de um objeto não precisam ter a mesma configuração de compactação.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 tabelas e índices columnstore, qualquer tabela e índice columnstore sempre usam a compactação columnstore, e isso não é configurável pelo usuário.For columnstore tables and indexes, all columnstore tables and indexes always use columnstore compression and this is not user configurable. Use a compactação de arquivamento columnstore para reduzir ainda mais o tamanho dos dados em situações em que tenha tempo extra e recursos de CPU para armazenar e recuperar os dados.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. Você pode configurar a compactação de arquivamento columnstore nos seguintes objetos de banco de dados:You can configure columnstore archival compression on the following database objects:

  • Uma tabela columnstore inteira ou um índice columnstore clusterizado inteiro.A whole columnstore table or a whole clustered columnstore index. Desde que uma tabela columnstore é armazenada como um índice columnstore clusterizado, ambas as abordagens têm os mesmos resultados.Since a columnstore table is stored as a clustered columnstore index, both approaches have the same results.

  • Um índice columnstore não clusterizado inteiro.A whole nonclustered columnstore index.

  • Para tabelas columnstore particionadas e índices columnstore, você pode configurar a opção de compactação de arquivamento para cada partição, e as várias partições não precisam ter a mesma configuração de compactação de arquivamento.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.

Observação

Os dados também podem ser compactados usando o formato de algoritmo GZIP.Data can also be compressed using the GZIP algorithm format. Essa é uma etapa adicional e é mais adequada para compactar partes dos dados ao arquivar dados antigos para armazenamento de longo prazo.This is an additional step and is most suitable for compressing portions of the data when archiving old data for long term storage. Os dados compactados usando a função COMPRESS não podem ser indexados.Data compressed using the COMPRESS function cannot be indexed. Para obter mais informações, veja COMPRESS (Transact-SQL).For more information, see COMPRESS (Transact-SQL).

Considerações sobre quando usar a compactação de linha e de páginaConsiderations for When You Use Row and Page Compression

Ao usar compactação de linha e de página, esteja atento às seguintes considerações:When you use row and page compression, be aware the following considerations:

  • Os detalhes de compactação de dados estão sujeitos a alteração sem aviso em service packs ou versões subsequentes.The details of data compression are subject to change without notice in service packs or subsequent releases.

  • A compactação está disponível em Banco de dados SQL do AzureAzure SQL DatabaseCompression is available in Banco de dados SQL do AzureAzure SQL Database

  • A compactação não está disponível em todas as edições do SQL ServerSQL Server.Compression is not available in every edition of SQL ServerSQL Server. Para obter mais informações, consulte Recursos com suporte nas edições do SQL Server 2016.For more information, see Features Supported by the Editions of SQL Server 2016.

  • A compactação não está disponível para tabelas do sistema.Compression is not available for system tables.

  • A compactação pode permitir que mais linhas sejam armazenadas em uma página, mas não altera o tamanho máximo de linha de uma tabela ou de um í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.

  • Uma tabela não pode ser habilitada para compactação quando o tamanho máximo da linha mais a sobrecarga de compactação exceder o tamanho máximo de linha 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 exemplo, uma tabela que tenha as colunas c1char(8000) e c2char(53) não pode ser compactada devido à sobrecarga de compactação adicional.For example, a table that has the columns c1char(8000) and c2char(53) cannot be compressed because of the additional compression overhead. Quando o formato de armazenamento vardecimal é usado, a verificação do tamanho da linha é executada quando o formato é habilitado.When the vardecimal storage format is used, the row-size check is performed when the format is enabled. Para a compactação de linha e de página, a verificação do tamanho da linha é executada quando o objeto é inicialmente compactado e, depois, verificado à medida que cada linha é inserida ou modificada.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. A compactação impõe as duas regras seguintes:Compression enforces the following two rules:

    • Uma atualização para um tipo de comprimento fixo sempre deve ter êxito.An update to a fixed-length type must always succeed.

    • A desabilitação da compactação de dados sempre deve ter êxito.Disabling data compression must always succeed. Mesmo que a linha compactada caiba em uma página, o que significa que ela é menor do que 8060 bytes, o SQL ServerSQL Server impedirá atualizações que talvez não caibam na linha quando ela for descompactada.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.

  • Quando uma lista de partições é especificada, o tipo de compactação deve ser definido como ROW, PAGE ou NONE em partições individuais.When a list of partitions is specified, the compression type can be set to ROW, PAGE, or NONE on individual partitions. Se a lista de partições não for especificada, todas as partições serão definidas com a propriedade de compactação de dados especificada na instrução.If the list of partitions is not specified, all partitions are set with the data compression property that is specified in the statement. Quando uma tabela ou índice é criado, a compactação dos dados é definida como NONE, a menos que especificada de outra maneira.When a table or index is created, data compression is set to NONE unless otherwise specified. Quando uma tabela é modificada a compactação existente é preservada, a menos que especificada de outra maneira.When a table is modified, the existing compression is preserved unless otherwise specified.

  • Se for especificada uma lista de partições ou uma partição fora do intervalo, um erro será gerado.If you specify a list of partitions or a partition that is out of range, an error will be generated.

  • Índices não clusterizados não herdam a propriedade de compactação da tabela.Nonclustered indexes do not inherit the compression property of the table. Para compactar índices, você deve definir explicitamente a propriedade de compactação dos índices.To compress indexes, you must explicitly set the compression property of the indexes. Por padrão, a configuração de compactação de índices será definida como NONE quando o índice for criado.By default, the compression setting for indexes will set to NONE when the index is created.

  • Quando um índice clusterizado é criado em um heap, ele herda o estado de compactação do heap, a menos que um estado de compactação alternativo seja especificado.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.

  • Quando um heap é configurado para compactação em nível de página, as páginas só recebem compactação em nível de página nos seguintes modos:When a heap is configured for page-level compression, pages receive page-level compression only in the following ways:

    • Os dados são importados em massa com otimizações em massa habilitadas.Data is bulk imported with bulk optimizations enabled.

    • Os dados são inseridos usando INSERT INTO ... A sintaxe WITH (TABLOCK) e a tabela não têm um índice não clusterizado.Data is inserted using INSERT INTO ... WITH (TABLOCK) syntax and the table does not have a nonclustered index.

    • Uma tabela é recriada executando ALTER TABLE ... Instrução REBUILD com a opção de compactação PAGE.A table is rebuilt by executing the ALTER TABLE ... REBUILD statement with the PAGE compression option.

  • As novas páginas alocadas em um heap como parte de operações DML não usarão a compactação PAGE até o heap ser recompilado.New pages allocated in a heap as part of DML operations will not use PAGE compression until the heap is rebuilt. Recompile o heap removendo e reaplicando a compactação ou criando e removendo um índice clusterizado.Rebuild the heap by removing and reapplying compression, or by creating and removing a clustered index.

  • A alteração da configuração de compactação de um heap exige que todos os índices não clusterizados na tabela sejam recriados, para que tenham ponteiros para os novos locais de linha no heap.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.

  • Você pode habilitar ou desabilitar a compactação de ROW ou PAGE online ou offline.You can enable or disable ROW or PAGE compression online or offline. A habilitação da compactação em um heap tem thread único para uma operação online.Enabling compression on a heap is single threaded for an online operation.

  • Os requisitos de espaço em disco para habilitar ou desabilitar a compactação de página ou de linha são os mesmos que para criar ou recriar um índice.The disk space requirements for enabling or disabling row or page compression are the same as for creating or rebuilding an index. Para dados particionados, você pode reduzir o espaço exigido para habilitar ou desabilitar a compactação para uma partição de 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 o estado de compactação das partições em uma tabela particionada, consulte a coluna data_compression da exibição do 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.

  • Quando você estiver compactando índices, as páginas de nível folha poderão ser compactadas com a compactação de linha e de página.When you are compressing indexes, leaf-level pages can be compressed with both row and page compression. As páginas que não são de nível folha não recebem a compactação de página.Non–leaf-level pages do not receive page compression.

  • Devido ao seu tamanho, os tipos de dados de valor grande são, às vezes, armazenados separadamente dos dados de linhas normais em páginas com finalidades específicas.Because of their size, large-value data types are sometimes stored separately from the normal row data on special purpose pages. A compactação de dados não está disponível para os dados armazenados separadamente.Data compression is not available for the data that is stored separately.

  • As tabelas que implementaram o formato de armazenamento vardecimal no SQL Server 2005SQL Server 2005 reterão essas configurações quando forem atualizadas.Tables which implemented the vardecimal storage format in SQL Server 2005SQL Server 2005 will retain that setting when upgraded. Você pode aplicar a compactação de linha a uma tabela com formato de armazenamento vardecimal.You can apply row compression to a table that has the vardecimal storage format. Entretanto, como a compactação de linha é um superconjunto de formato de armazenamento vardecimal, não há motivo para reter esse formato.However, because row compression is a superset of the vardecimal storage format, there is no reason to retain the vardecimal storage format. Os valores decimais não ganham compactação adicional quando você combina o formato de armazenamento vardecimal com a compactação de linha.Decimal values gain no additional compression when you combine the vardecimal storage format with row compression. Só é possível aplicar a compactação de página a uma tabela com formato de armazenamento vardecimal; entretanto, as colunas de formato de armazenamento vardecimal provavelmente não alcançarão a compactação 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.

    Observação

    O SQL Server 2016SQL Server 2016 oferece suporte ao formato de armazenamento vardecimal; porém, como a compactação em nível de linha alcança as mesmas metas, o formato de armazenamento vardecimal é preterido. supports the vardecimal storage format; however, because row-level compression achieves the same goals, the vardecimal storage format is deprecated. Esse recurso será removido em uma versão futura do Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Usando a compactação columnstore e de arquivamento columnstoreUsing Columnstore and Columnstore Archive Compression

||
|-|
|Aplica-se a: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 até a versão atual), Banco de dados SQL do AzureAzure SQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 through current version), Banco de dados SQL do AzureAzure SQL Database.|

Noções básicasBasics

As tabelas e os índices columnstore são sempre armazenados com a compactação columnstore.Columnstore tables and indexes are always stored with columnstore compression. Você pode reduzir ainda mais o tamanho dos dados de columnstore configurando um compactação adicional denominada compactação de arquivamento.You can further reduce the size of columnstore data by configuring an additional compression called archival compression. Para executar a compactação de arquivamento, o SQL ServerSQL Server executa o algoritmo de compactação XPRESS da Microsoft nos dados.To perform archival compression, SQL ServerSQL Server runs the Microsoft XPRESS compression algorithm on the data. Adicione ou remova a compactação de arquivamento usando os seguintes tipos de compactação de dados:Add or remove archival compression by using the following data compression types:

  • Use a compactação de dados COLUMNSTORE_ARCHIVE para compactar os dados de columnstore com a compactação de arquivamento.Use COLUMNSTORE_ARCHIVE data compression to compress columnstore data with archival compression.

  • Use a compactação de dados COLUMNSTORE para descompactar a compactação de arquivamento.Use COLUMNSTORE data compression to decompress archival compression. Esses dados resultantes continuarão a ser compactadas com a compactação columnstore.This resulting data will continue to be compressed with columnstore compression.

    Para adicionar a compactação de arquivamento, use ALTER TABLE (Transact-SQL) ou ALTER INDEX (Transact-SQL) com a opção REBUILD e 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.

    Exemplos: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 remover a compactação de arquivamento e restaurar os dados à compactação columnstoue, use ALTER TABLE (Transact-SQL) ou ALTER INDEX (Transact-SQL) com a opção REBUILD e 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.

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

O exemplo a seguir define a compactação de dados para columnstore em algumas partições, e para o arquivamento columnstore em outras partições.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)  
) ;  

DesempenhoPerformance

A compactação dos índices columnstore com a compactação de arquivamento fará com que o índice seja executado de forma mais lenta do que os índices columnstore que não têm a compactação de arquivamento.Compressing columnstore indexes with archival compression will cause the index to perform slower than columnstore indexes that do not have the archival compression. Use a compactação de arquivamento apenas quando tiver tempo extra e recursos de CPU para compactar e recuperar os dados.Use archival compression only when you can afford to use extra time and CPU resources to compress and retrieve the data.

O benefício de um desempenho mais lento é o armazenamento reduzido, que é útil para os dados que não são acessados com frequência.The benefit of slower performance is reduced storage which is useful for data that is not frequently accessed. Por exemplo, se você tiver uma partição para cada mês de dados, e a maior parte da atividade for para os meses mais recentes, você poderá arquivar os meses anteriores para reduzir os requisitos de armazenamento.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.

MetadadosMetadata

As seguintes exibições do sistema contêm informações sobre compactação de dados para índices clusterizados:The following system views contain information about data compression for clustered indexes:

Como a compactação afeta tabelas e índices particionadosHow Compression Affects Partitioned Tables and Indexes

Ao usar a compactação de dados com tabelas e índices particionados, esteja atento às seguintes considerações:When you use data compression with partitioned tables and indexes, be aware of the following considerations:

  • Quando as partições são divididas usando a instrução ALTER PARTITION, ambas as partições herdam o atributo de compactação de dados da partição original.When partitions are split by using the ALTER PARTITION statement, both partitions inherit the data compression attribute of the original partition.

  • Quando duas partições são mescladas, a partição resultante herda o atributo de compactação de dados da partição de destino.When two partitions are merged, the resultant partition inherits the data compression attribute of the destination partition.

  • Para alternar uma partição, a propriedade de compactação de dados da partição deve corresponder à propriedade de compactação da tabela.To switch a partition, the data compression property of the partition must match the compression property of the table.

  • Há duas variações de sintaxe que podem ser usadas para modificar a compactação de uma tabela ou índice particionado:There are two syntax variations that you can use to modify the compression of a partitioned table or index:

    • A sintaxe seguinte só recria a partição referenciada:The following syntax rebuilds only the referenced partition:

      ALTER TABLE <table_name>   
      REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  <option>)  
      
    • A sintaxe seguinte recria a tabela inteira usando a configuração de compactação existente para qualquer partição não referenciada: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>),  
      ... )  
      

      Os índices particionados seguem o mesmo princípio usando ALTER INDEX.Partitioned indexes follow the same principle using ALTER INDEX.

  • Quando um índice clusterizado é descartado, as partições de heap correspondentes mantêm sua configuração de compactação de dados, a menos que o esquema de particionamento seja modificado.When a clustered index is dropped, the corresponding heap partitions retain their data compression setting unless the partitioning scheme is modified. Se o esquema de particionamento for alterado, todas as partições serão recriadas para um estado não compactado.If the partitioning scheme is changed, all partitions are rebuilt to an uncompressed state. As etapas seguintes são necessárias para descartar um índice clusterizado e alterar o esquema de particionamento:To drop a clustered index and change the partitioning scheme requires the following steps:

    1. Descarte o índice clusterizado.Drop the clustered index.

    2. Modifique a tabela usando a opção ALTER TABLE ... REBUILD... que especifica a opção de compactação.Modify the table by using the ALTER TABLE ... REBUILD ... option that specifies the compression option.

      Descartar um índice clusterizado OFFLINE é uma operação rápida porque apenas os níveis superiores dos índices clusterizados são removidos.To drop a clustered index OFFLINE is a very fast operation, because only the upper levels of clustered indexes are removed. Quando um índice clusterizado é descartado ONLINE, o SQL ServerSQL Server deve recriar o heap duas vezes, uma para a etapa 1 e outra para a etapa 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.

Como a compactação afeta a replicaçãoHow Compression Affects Replication

||
|-|
|Aplica-se a: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 até a versão atual).Applies to: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 through current version).|
Ao usar a compactação de dados com replicação, esteja atento às seguintes considerações:When you are using data compression with replication, be aware of the following considerations:

  • Quando o Agente de Instantâneo gera o script de esquema inicial, o novo esquema usará as mesmas configurações de compactação para a tabela e seus índices.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. A compactação não pode ser habilitada apenas na tabela e não no índice.Compression cannot be enabled on just the table and not the index.

  • Para replicação transacional, a opção de esquema de artigo determina quais objetos e propriedades dependentes devem ser incluídos no script.For transactional replication the article schema option determines what dependent objects and properties have to be scripted. Para obter mais informações, veja sp_addarticle.For more information, see sp_addarticle.

    O Agente de Distribuição não verifica Assinantes de nível inferior ao aplicar scripts.The Distribution Agent does not check for down-level Subscribers when it applies scripts. Se a replicação de compactação for selecionada, haverá falha na criação da tabela em Assinantes de nível inferior.If the replication of compression is selected, creating the table on down-level Subscribers will fail. Em caso de topologia mista, não habilite a replicação de compactação.In the case of a mixed topology, do not enable the replication of compression.

  • Para replicação de mesclagem, o nível de compatibilidade da publicação substitui as opções de esquema e determina os objetos de esquema que serão incluídos no script.For merge replication, publication compatibility level overrides the schema options and determines the schema objects that will be scripted.

    Em caso de topologia mista, se não for exigido o suporte a novas opções de compactação, o nível de compatibilidade da publicação deverá ser definido para a versão de Assinante de nível 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. Se for exigido, será necessário compactar as tabelas no Assinante depois que elas forem criadas.If it is required, compress tables on the Subscriber after they have been created.

    A tabela a seguir mostra as configurações de replicação que controlam a compactação durante a replicação.The following table shows replication settings that control compression during replication.

Intenção do usuárioUser intent Replicar esquema de partição para uma tabela ou um índiceReplicate partition scheme for a table or index Replicar configurações de compactaçãoReplicate compression settings Comportamento do scriptScripting behavior
Para replicar o esquema de partição e habilitar a compactação no Assinante da partição.To replicate the partition scheme and enable compression on the Subscriber on the partition. VerdadeiroTrue VerdadeiroTrue Gera scripts para o esquema da partição e as configurações de compactação.Scripts both the partition scheme and the compression settings.
Para replicar o esquema da partição, mas não compactar os dados no Assinante.To replicate the partition scheme but not compress the data on the Subscriber. VerdadeiroTrue FalsoFalse Gera script para o esquema da partição, mas não para as configurações de compactação da partição.Scripts out the partition scheme but not the compression settings for the partition.
Para não replicar o esquema da partição e não compactar os dados no Assinante.To not replicate the partition scheme and not compress the data on the Subscriber. FalsoFalse FalsoFalse Não gera scripts para a partição nem para as configurações de compactação.Does not script partition or compression settings.
Para compactar a tabela no Assinante, se todas as partições forem compactadas no Publicador, mas não replicar o esquema de partição.To compress the table on the Subscriber if all the partitions are compressed on the Publisher, but not replicate the partition scheme. FalsoFalse VerdadeiroTrue Verifica se todas as partições estão habilitadas para compactação.Checks if all the partitions are enabled for compression.

Gera scripts para a compactação em nível de tabela.Scripts out compression at the table level.

Como a compactação afeta outros componentes do SQL ServerHow Compression Affects Other SQL Server Components

||
|-|
|Aplica-se a: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 até a versão atual).Applies to: SQL ServerSQL Server ( SQL Server 2014SQL Server 2014 through current version).|

A compactação ocorre no mecanismo de armazenamento e os dados são apresentados à maioria dos outros componentes do SQL ServerSQL Server em um estado não compactado.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. Isso limita os efeitos da compactação nos outros componentes para:This limits the effects of compression on the other components to the following:

  • Operações de importação e exportação em massaBulk import and export operations

    Quando os dados são exportados, mesmo em formato nativo, a saída dos dados é realizada no formato de linha descompactada.When data is exported, even in native format, the data is output in the uncompressed row format. Isso pode fazer com que o tamanho do arquivo de dados exportado seja significativamente maior do que os dados de origem.This can cause the size of exported data file to be significantly larger than the source data.

    Quando os dados são importados, se a tabela de destino tiver sido habilitada para compactação, os dados serão convertidos pelo mecanismo de armazenamento em formato de linha compactada.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. Isso pode causar um aumento no uso da CPU se comparado à importação de dados em uma tabela descompactada.This can cause increased CPU usage compared to when data is imported into an uncompressed table.

    Quando os dados são importados em massa para um heap com compactação de página, a operação de importação em massa tentará compactar os dados com a compactação de página quando eles forem inseridos.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.

  • A compactação não afeta o backup e a restauração.Compression does not affect backup and restore.

  • A compactação não afeta o envio de logs.Compression does not affect log shipping.

  • A compactação de dados é incompatível com colunas esparsas.Data compression is incompatible with sparse columns. Portanto, as tabelas que contêm colunas esparsas não podem ser compactadas, assim como as colunas esparsas não podem ser adicionadas a uma tabela compactada.Therefore, tables containing sparse columns cannot be compressed nor can sparse columns be added to a compressed table.

  • A habilitação da compactação pode fazer com que os planos de consulta sejam alterados, porque os dados são armazenados usando um número diferente de páginas e um número de linhas por 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 tambémSee Also

Implementação da compactação de linha Row Compression Implementation
Implementação da compactação de página Page Compression Implementation
Implementação da compactação 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)