Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criar uma tabela com compactação no SQL Server (T-SQL)


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.