Estruturas de heap

Heap é uma tabela sem índice clusterizado. Heaps têm uma linha em sys.partitions, com index_id = 0 para cada particionamento usado pelo heap. Por padrão, um heap tem um único particionamento. Quando um heap tem particionamentos múltiplos, cada particionamento tem uma estrutura de heap que contém os dados para aquele específico. Por exemplo, se um heap tiver quatro particionamentos, haverá quatro estruturas de heap; uma em cada particionamento.

Dependendo dos tipos de dados no heap, cada estrutura de heap terá uma ou mais unidades de alocação para armazenar e gerenciar os dados de um particionamento específico. No mínimo, cada heap terá uma unidade de alocação IN_ROW_DATA por particionamento. O heap também terá uma unidade de alocação LOB_DATA por particionamento, caso tenha colunas LOB (objetos grandes). Também terá uma unidade de alocação ROW_OVERFLOW_DATA por particionamento, se tiver colunas de comprimento variável excedendo o limite de tamanho de linha de 8.060 bytes. Para obter mais informações sobre unidades de alocação, consulte Organização de tabela e índice.

A coluna first_iam_page da exibição de sistema sys.system_internals_allocation_units aponta para a primeira página IAM na cadeia de páginas IAM que gerencia o espaço alocado para o heap em um particionamento específico. O SQL Server usa as páginas IAM para se movimentar pelo heap. As páginas de dados e as linhas dentro delas não estão em nenhuma ordem específica e não estão vinculadas. A única conexão lógica entre as páginas de dados são as informações registradas nas páginas IAM.

Observação importanteImportante

A exibição de sistema sys.system_internals_allocation_units é reservada somente para uso interno do MicrosoftSQL Server. A compatibilidade futura não está garantida.

Os exames de tabela ou as leituras consecutivas de um heap podem ser executados examinando as páginas IAM para localizar as extensões que estão mantendo páginas do heap. Como o IAM representa extensões na mesma ordem que elas existem nos arquivos de dados, isso significa que esses exames de heap consecutivo progridem seqüencialmente em cada arquivo. O uso das páginas IAM para definir a seqüência de exame também significa que as linhas do heap não são retornadas normalmente na ordem em que foram inseridas.

A ilustração a seguir mostra como o Mecanismo de Banco de Dados do SQL Server usa páginas IAM para recuperar linhas de dados em um único heap de particionamento.

As páginas IAM recuperam dados em um único heap de partição