Requisitos: No banco de dados SQL Server, existe uma tabela (por exemplo, tabela de log, tabela de log de requisições) que ocupa um espaço em disco muito grande, talvez centenas de GB, como reduzir o uso de espaço em tabelas? A compressão de dados (economizando espaço) pode ser ativada para texto altamente repetitivo (por exemplo, HTML, JSON, logs).
Compressão ROW
A compressão altera o armazenamento físico dos dados, mas não a estrutura lógica dos dados. O processo de compressão de linha:
Identifique o tipo de dado de cada coluna e converta-o para um comprimento variável Por fim, a quantidade de solicitações de espaço de armazenamento é reduzida à demanda real Após a compressão, a quantidade de dados armazenados em cada página é aumentada Após a compressão, reduza a quantidade de metadados Por exemplo, se o tipo de dado de uma coluna for smallint, o sistema aloca 2 bytes por padrão Mas, na realidade, apenas 1 byte de espaço é usado e, se a compressão for ativada na mesa, ela pode ser alocada sob demanda
Compressão PAGE
A compressão de páginas realiza operações adicionais para aprimorar a compressão de linhas Operações principais: compressão de linha, compressão de prefixo, compressão de dicionário
Consumo de CPU: compressão PAGE > compressão de linha
Teste
Crie uma nova tabela Users1 e Users2, ambas inserem 100.000 pedaços de dados, e o script sql é o seguinte:
Para visualizar a ocupação de espaço na tabela, todas com 3,27 MB, o comando é o seguinte:
Como mostrado abaixo:
Para visualizar o status de compressão da tabela Users2, o comando é o seguinte:
Como mostrado abaixo:
sp_estimate_data_compression_savingsEstime as economias que podem ocorrer ao ativar tabelas ou partições para linhas, páginas, armazenamentos de colunas, arquivos de armazenamento de colunas ou compressão XML. O comando é o seguinte:
A saída é a seguinte:
object_name schema_name index_id partition_number size_with_current_compression_setting(KB) size_with_requested_compression_setting(KB) sample_size_with_current_compression_setting(KB) sample_size_with_requested_compression_setting(KB) Usuários2 dbo 1 1 3368 1296 3448 1328
size_with_current_compression_setting (KB) 3368 KB O índice ocupa ≈ 3,29 MB com as configurações atuais de compressão size_with_requested_compression_setting (KB) 1296 KB Footprint estimado ≈ 1,27 MB se você ativar o novo método de compressão solicitado, como PAGE ou ROW Para executar compressão de página, o comando é o seguinte:
Comparação dos efeitos:A tabela Users2 tem 3,27 MB antes da compressão e 1,23 MB após a compressão, como mostrado na figura abaixo:
A visualização é a seguinte:
Referência:
O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível. |