Partilhar via


Implementação de compactação de página

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Este artigo resume como o Mecanismo de Banco de Dados implementa a compactação de página. Este resumo fornece informações básicas para ajudá-lo a planejar o espaço de armazenamento necessário para seus dados.

A compactação de página é semelhante para tabelas, partições de tabela, índices e partições de índice. A seguinte descrição da compactação de página para uma tabela aplica-se igualmente à compactação de página para todos os tipos de objeto. Os exemplos a seguir compactam cadeias de caracteres, mas a compactação de prefixo e dicionário aplica os mesmos princípios a outros tipos de dados.

A compressão ao nível das folhas de tabelas e índices com compressão de página consiste em três operações na seguinte ordem:

  1. Compressão de linha
  2. Compressão de prefixo
  3. Compressão de dicionários

Quando você usa a compactação de página, as páginas de índices sem nível de folha são compactadas usando apenas a compactação de linha. Para obter mais informações sobre compactação de linha, veja Implementação de compactação de linha.

Compressão de prefixo

Para cada página que está sendo compactada, a compactação de prefixo usa as seguintes etapas:

  1. Para cada coluna, é identificado um valor que pode ser usado para reduzir o espaço de armazenamento para os valores em cada coluna.

  2. Uma linha que representa os valores de prefixo para cada coluna é criada e armazenada na estrutura de informações de compactação (CI) que segue imediatamente o cabeçalho da página.

  3. Os valores de prefixo repetidos na coluna são substituídos por uma referência ao prefixo correspondente. Se o valor em uma linha não corresponder exatamente ao valor do prefixo selecionado, uma correspondência parcial ainda poderá ser indicada.

A ilustração a seguir mostra uma página de exemplo de tabela antes da compressão de prefixo.

Diagrama de página antes da compressão de prefixo.

A ilustração a seguir mostra a mesma página após a compactação de prefixo. O prefixo é movido para o cabeçalho e os valores da coluna são alterados para referências ao prefixo.

Diagrama de página após compressão de prefixo.

Na primeira coluna da primeira linha, o valor 4b indica que os quatro primeiros caracteres do prefixo (aaab) estão presentes para essa linha, e também o caractere b. Isso resulta no valor aaabb, que é o valor original.

Compressão de dicionários

Após a conclusão da compactação de prefixos, a compactação de dicionário é aplicada. A compressão de dicionário procura valores repetidos em qualquer parte da página e armazena-os na área de CI. Ao contrário da compactação de prefixos, a compactação de dicionário não está restrita a uma coluna. A compactação de dicionário pode substituir valores repetidos que ocorrem em qualquer lugar de uma página. A ilustração a seguir mostra a mesma página após a compactação do dicionário.

Diagrama de página após compressão de dicionário.

O valor 4b foi referenciado a partir de diferentes colunas da página.

Quando ocorre a compactação de página

Quando uma nova tabela é criada com compactação de página, não ocorre compactação. No entanto, os metadados da tabela indicam que a compactação de página deve ser usada. À medida que os dados são adicionados à primeira página de dados, os dados são compactados por linha. Como a página não está cheia, nenhum benefício é obtido com a compactação da página. Quando a página estiver cheia, a próxima linha a ser adicionada iniciará a operação de compactação de página. Toda a página é revista; cada coluna é avaliada para compactação de prefixo e, em seguida, todas as colunas são avaliadas para compactação de dicionário. Se a compactação de página tiver criado espaço suficiente na página para uma linha adicional, a linha será adicionada e os dados serão compactados por linha e por página. Se o espaço ganho pela compactação de página menos o espaço necessário para a estrutura de CI não for significativo, a compactação de página não será usada para essa página. As linhas seguintes cabem na nova página ou, se não se encaixarem, uma nova página é adicionada à tabela. Semelhante à primeira página, a nova página não é compactada na primeira página.

Quando uma tabela existente que contém dados é convertida em compactação de página, cada página é reconstruída e avaliada. A reconstrução de todas as páginas causa a reconstrução da tabela, índice ou partição.

Próximos passos