sp_estimate_data_compression_savings (Transact-SQL)
Retorna o tamanho atual do objeto solicitado e faz a estimativa do tamanho do objeto para o estado de compactação solicitado. A compactação pode ser avaliada para tabelas inteiras ou partes de tabelas. Isso inclui heaps, índices clusterizados, índices não clusterizados, exibições indexadas e partições de tabelas e índices. Os objetos podem ser compactados usando a compactação de linha ou de página. Se a tabela, o índice ou a partição já estiver compactada, será possível usar esse procedimento para estimar o tamanho da tabela, do índice ou da partição, caso ela seja descompactada.
Dica
A compactação e sp_estimate_data_compression_savings não estão disponíveis em todas as edições do Microsoft SQL Server.Para obter uma lista de recursos com suporte nas edições do SQL Server, consulte Recursos compatíveis com as edições do SQL Server 2014.
Para estimar o tamanho do objeto se ele usar a configuração de compactação solicitada, esse procedimento armazenado faz a amostragem do objeto de origem e carrega esses dados em uma tabela e índice equivalentes criados no tempdb. Em seguida, a tabela ou o índice criado no tempdb é compactado para a configuração solicitada e o aumento estimado da compactação é computado.
Para alterar o estado de compactação de uma tabela, índice ou partição, use as instruções ALTER TABLE ou ALTER INDEX. Para obter informações gerais sobre compactação, consulte Compactação de dados.
Dica
Se os dados existentes forem fragmentados, é possível reduzir seu tamanho sem usar compactação recriando o índice.Para índices, o fator de preenchimento será aplicado durante a recriação de um índice.Isso pode aumentar o tamanho do índice.
Aplica-se a: SQL Server (SQL Server 2008 até a versão atual). |
Convenções da sintaxe Transact-SQL
Sintaxe
sp_estimate_data_compression_savings
[ @schema_name = ] 'schema_name'
, [ @object_name = ] 'object_name'
, [@index_id = ] index_id
, [@partition_number = ] partition_number
, [@data_compression = ] 'data_compression'
[;]
Argumentos
[ @schema\_name= ] 'schema_name'
É o nome do esquema de banco de dados que contém a tabela ou a exibição indexada. schema_name é sysname. Se schema_name for NULL, o esquema padrão do usuário atual será usado.[ @object\_name= ] 'object_name'
É o nome da tabela ou exibição indexada em que o índice está. object_name é sysname.[ @index\_id= ] 'index_id'
É a ID do índice. O index_id é int e pode ter um dos seguintes valores: o número da ID de um índice, NULL ou 0 se object_idé um heap. Para retornar informações de todos os índices de uma tabela base ou exibição, especifique NULL. Se você especificar NULL, também deverá especificar NULL para partition_number.[ @partition\_number= ] 'partition_number'
É o número da partição no objeto. O partition_number é int e pode ter um dos seguintes valores: o número da partição de um índice ou heap, NULL ou 1 para um heap ou índice não particionado.Para especificar a partição, também é possível especificar a função $partition. Para retornar informações de todas as partições do objeto proprietário, especifique NULL.
[ @data\_compression= ] 'data_compression'
É o tipo de compactação a ser avaliado. data_compression pode ter um dos seguintes valores: NONE, ROW ou PAGE.
Valores de código de retorno
0 (êxito) ou 1 (falha)
Conjuntos de resultados
O conjunto de resultados a seguir é retornado para fornecer o tamanho atual e estimado da tabela, índice ou partição.
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
object_name |
sysname |
Nome da tabela ou exibição indexada. |
schema_name |
sysname |
Esquema da tabela ou exibição indexada. |
index_id |
int |
ID de um índice. 0 = Heap 1 = Índice clusterizado >1 = Índice não clusterizado |
partition_number |
int |
Número da partição. Retorna 1 para uma tabela ou índice não particionado. |
size_with_current_compression_setting (KB) |
bigint |
Tamanho da tabela, índice ou partição solicitada como existe atualmente. |
size_with_requested_compression_setting (KB) |
bigint |
Tamanho estimado da tabela, índice ou partição que usa a configuração da compactação solicitada e, se aplicável, o fator de preenchimento existente, supondo que não há nenhuma fragmentação. |
sample_size_with_current_compression_setting (KB) |
bigint |
Tamanho do exemplo com a definição de compactação atual. Isso inclui qualquer fragmentação. |
sample_size_with_requested_compression_setting (KB) |
bigint |
Tamanho do exemplo criado usando a configuração da compactação solicitada e, se aplicável, o fator de preenchimento existente e nenhuma fragmentação. |
Comentários
Use sp_estimate_data_compression_savings para estimar o aumento que pode ocorrer quando uma tabela ou partição é habilitada para compactação de linha ou de página. Por exemplo, se o tamanho médio da linha puder ser reduzido em 40%, o tamanho do objeto poderá ser potencialmente reduzido em 40%. Um aumento de espaço poderá não ser obtido porque isso depende do fator de preenchimento e do tamanho da linha. Por exemplo, se você tiver uma linha de 8000 bytes de comprimento e reduzir seu tamanho em 40%, ainda poderá ajustar apenas uma linha em uma página de dados. Não há nenhum aumento.
Se os resultados da execução de sp_estimate_data_compression_savings indicarem que a tabela aumentará, isso significa que muitas linhas da tabela usam quase toda a precisão dos tipos de dados e que a adição da pequena sobrecarga necessária para o formato compactado será maior do que o aumento obtido da compactação. Nessa caso raro, não habilite a compactação.
Se uma tabela estiver habilitada para compactação, use sp_estimate_data_compression_savings para estimar o tamanho médio da linha se a tabela não for compactada.
Um bloqueio (IS) é adquirido na tabela durante essa operação. Se um bloqueio (IS) não puder ser obtido, o procedimento será bloqueado. A tabela é verificada no nível de isolamento confirmado de leitura.
Se a configuração da compactação solicitada for igual à configuração da compactação atual, o procedimento armazenado retornará o tamanho estimado sem nenhuma fragmentação de dados e usando o fator de preenchimento existente.
Se a ID da partição ou índice não existir, nenhum resultado será retornado.
Permissões
Requer a permissão SELECT na tabela.
Limitações e restrições
Este procedimento não se aplica às tabelas columnstore e, portanto, não aceita os parâmetros de compactação de dados COLUMNSTORE e COLUMNSTORE_ARCHIVE.
Exemplos
O exemplo a seguir faz uma estimativa do tamanho da tabela Production.WorkOrderRouting quando compactada por meio da compactação ROW.
USE AdventureWorks2012;
GO
EXEC sp_estimate_data_compression_savings 'Production', 'WorkOrderRouting', NULL, NULL, 'ROW' ;
GO
Consulte também
Referência
Procedimentos armazenados do Mecanismo de Banco de Dados (Transact-SQL)