Ao criar uma tabela no SQL Server, você tem a opção de usar a compactação de dados.
A compactação de dados ajuda a reduzir o tamanho do banco de dados. Também pode ajudar a melhorar o desempenho de cargas de trabalho intensivas de E/S devido ao fato de os dados serem armazenados em menos páginas, reduzindo assim o número de páginas que as consultas precisam ler do disco.
Para fazer isso, use o
DATA_COMPRESSION
opção ao criar a tabela. Exemplo
Aqui está um exemplo para demonstrar.
CREATE TABLE Movies (
MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
MovieName nvarchar(200)
)
WITH (DATA_COMPRESSION = ROW);
Neste caso eu uso compressão de linha.
O seguinte usa compactação de página.
CREATE TABLE Movies (
MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
MovieName nvarchar(200)
)
WITH (DATA_COMPRESSION = PAGE);
Como remover a compactação
Você pode remover a compactação usando o
ALTER TABLE
instrução para reconstruir a tabela, usando NONE
como o tipo de compressão. ALTER TABLE MOVIES
REBUILD WITH (DATA_COMPRESSION = NONE);
Tabelas de coluna
Se você estiver usando tabelas columnstore (tabelas armazenadas com um índice columnstore clusterizado), os tipos de compactação acima não se aplicam. Nesse caso, suas opções de compactação são
COLUMNSTORE
e COLUMNSTORE_ARCHIVE
. Os resultados da compactação podem variar
A quantidade de compactação obtida dependerá dos dados e do tipo de compactação.
ROW
a compactação, por exemplo, remove bytes desnecessários dos valores da coluna armazenando-os em formato de comprimento variável. PAGE
a compressão, por outro lado, armazena os valores repetidos apenas uma vez por página e define o ponteiro das respectivas colunas dentro da página. Às vezes, você pode descobrir que compactar um objeto nem sempre diminui seu tamanho e, em alguns casos, pode aumentar seu tamanho.
Isso pode acontecer se suas colunas usarem um tipo de dados que não se beneficie da compactação.
Além disso, a compactação de linha reduz a sobrecarga de metadados, mas em alguns casos a sobrecarga pode ser maior do que o formato de armazenamento antigo.
Se seus dados não receberem nenhum benefício da compactação devido ao seu tipo de dados, é provável que a sobrecarga cause um aumento nos requisitos de armazenamento, em vez de uma diminuição.
Mas as variações no tamanho da compactação também dependerão dos dados reais. Por exemplo, se você tiver um char(10) coluna, a compactação removerá quaisquer caracteres de preenchimento à direita. Se você tiver muitas linhas com caracteres de preenchimento à direita, deverá obter um resultado melhor do que se não tiver nenhuma (ou poucas) linhas com caracteres de preenchimento à direita.