Implementação da compactação de páginas

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Este artigo resume como o Mecanismo de Banco de Dados implementa a compactação de páginas. Este resumo fornece informações básicas para ajudar no planejamento do espaço de armazenamento exigido pelos dados.

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

A compactação do nível folha de tabelas e índices usando a compactação de página consiste em três operações nesta ordem:

  1. Compactação de linha
  2. Compactação de prefixo
  3. Compactação de dicionário

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

Compactação de prefixo

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

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

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

  3. Os valores de prefixo repetidos da 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 um exemplo de página de uma tabela antes da compactação de prefixo.

Diagram of page before prefix compression.

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.

Diagram of page after prefix compression.

Na primeira coluna da primeira linha, o valor 4b indica que os quatro primeiros caracteres do prefixo (aaab) estão presentes nessa linha, bem como o caractere b. Isso faz com que o valor resultante seja aaabb, que é o valor original.

Compactação de dicionário

Após a conclusão da compactação de prefixo, é aplicada a compactação de dicionário. A compactação de dicionário procura valores repetidos em qualquer lugar da página e os armazena na área de informações de compactação. Ao contrário da compactação de prefixo, a compactação de dicionário não se restringe 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 de dicionário.

Diagram of page after dictionary compression.

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

Quando ocorre a compactação de página

Quando uma tabela é criada e possui 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. Como 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 de página. Quando a página está cheia, a próxima linha a ser adicionada inicia a operação de compactação de página. A página inteira é revisada; cada coluna é avaliada para compactação de prefixo e, em seguida, todas as colunas são avaliadas para confirmar se a compactação de dicionário é necessária. 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 tanto por linha quanto por página. Se o espaço obtido com a 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 futuras caberão na nova página ou, se não couberem, uma nova página será adicionada à tabela. Da mesma forma que a primeira página, a nova página não é inicialmente compactada.

Quando uma tabela existente que contém dados for convertida para compactação de página, cada página será recriada e avaliada. A recriação de todas as páginas causará a recriação da tabela, do índice ou da partição.

Próximas etapas