Estruturas de índice clusterizado

No SQL Server, os índices são organizados como árvores B. Cada página em uma árvore B de índice é chamada de nó do índice. O nó superior da árvore B é chamado de nó raiz. O nível inferior dos nós no índice é chamado de nó folha. Quaisquer níveis de índice entre os nós raiz e folha são coletivamente conhecidos como níveis intermediários. Em um índice clusterizado, os nós folha contêm as páginas de dados da tabela subjacente. Os nós de nível intermediário e raiz contêm páginas de índice com linhas de índice. Cada linha de índice contém um valor de chave e um ponteiro para uma página de nível de intermediário na árvore B ou uma linha de dados no nível folha do índice. As páginas de cada nível do índice são vinculadas a uma lista vinculada duas vezes.

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

Dependendo dos tipos de dados no índice clusterizado, cada estrutura de índice clusterizado terá uma ou mais unidades de alocação para armazenar e gerenciar os dados de um particionamento específico. No mínimo, cada índice clusterizado terá uma unidade de alocação IN_ROW_DATA por particionamento. O índice clusterizado também terá uma unidade de alocação LOB_DATA por particionamento se contiver 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.

As páginas da cadeia de dados e as linhas são classificadas pelo valor da chave de índice clusterizado. Todas as inserções são feitas no ponto em que o valor de chave da linha inserida se ajusta à seqüência de classificação entre as linhas existentes. As coleções de páginas da árvore B são ancoradas por ponteiros de página na exibição de sistema sys.system_internals_allocation_units.

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.

Para um índice clusterizado, a coluna root_page em sys.system_internals_allocation_units aponta para a parte superior do índice clusterizado de um particionamento específico. O SQL Server move para baixo o índice para localizar a linha correspondente a uma chave de índice clusterizado. Para localizar um intervalo de chaves, o SQL Server se movimenta pelo índice para localizar o valor de chave inicial no intervalo e, depois, examina as páginas de dados usando os ponteiros anteriores ou posteriores. Para localizar a primeira página na cadeia de páginas de dados, o SQL Server segue os ponteiros mais à esquerda do nó raiz do índice.

Esta ilustração mostra a estrutura de um índice clusterizado em um único particionamento.

Níveis de um índice clusterizado