Partilhar via


Requisitos de espaço em disco para operações DDL de índice

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

O espaço em disco é uma consideração importante quando você cria, reconstrói ou descarta índices. Espaço em disco inadequado pode degradar o desempenho ou até mesmo fazer com que a operação de índice falhe. Este artigo fornece informações gerais que podem ajudá-lo a determinar a quantidade de espaço em disco necessária para operações DDL (linguagem de definição de dados de índice).

Operações de índice que não exigem espaço em disco adicional

As seguintes operações de índice não requerem espaço em disco adicional:

  • ALTER INDEX REORGANIZE; no entanto, o espaço de log é necessário.

  • DROP INDEX quando estás descartando um índice não agrupado.

  • DROP INDEX ao descartar um índice agrupado offline sem especificar a cláusula MOVE TO e quando os índices não agrupados não existem.

  • CREATE TABLE (PRIMARY KEY ou UNIQUE restrições)

Operações de índice que exigem espaço em disco adicional

Todas as outras operações DDL de índice requerem espaço em disco temporário adicional para usar durante a operação e espaço em disco permanente para armazenar a nova estrutura ou estruturas de índice.

Quando uma nova estrutura de índice é criada, o espaço em disco para as estruturas antigas (origem) e novas (destino) é necessário em seus arquivos e grupos de arquivos apropriados. A estrutura antiga não é desalocada até que a transação de criação de índice seja consumada.

As seguintes operações DDL de índice criam novas estruturas de índice e requerem espaço em disco adicional:

  • CREATE INDEX
  • CREATE INDEX WITH DROP_EXISTING
  • ALTER INDEX REBUILD
  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY ou UNIQUE)
  • ALTER TABLE DROP CONSTRAINT PRIMARY KEY( ou UNIQUE) quando a restrição se baseia num índice agrupado
  • DROP INDEX MOVE TO (Aplica-se apenas a índices clusterizados.)

Espaço em disco temporário para classificação

Além do espaço em disco necessário para as estruturas de origem e destino, é necessário espaço em disco temporário para classificação, a menos que o otimizador de consulta encontre um plano de execução que não exija classificação.

Se a classificação for necessária, a classificação ocorrerá um novo índice de cada vez. Por exemplo, quando você recria um índice clusterizado e índices não clusterizados associados em uma única instrução, os índices são classificados um após o outro. Portanto, o espaço em disco temporário adicional que é necessário para classificar só tem que ser tão grande quanto o maior índice na operação. Este é quase sempre o índice agrupado.

Se a SORT_IN_TEMPDB opção estiver definida como ON, o maior índice deve caber em tempdb. Embora essa opção aumente a quantidade de espaço em disco temporário usado para criar um índice, ela pode reduzir o tempo necessário para criar um índice quando tempdb está em um conjunto de discos diferente do banco de dados do usuário.

Se SORT_IN_TEMPDB estiver definido como OFF (o padrão), cada índice, incluindo índices particionados, será classificado em seu espaço em disco de destino e apenas o espaço em disco para as novas estruturas de índice será necessário.

Para obter um exemplo de cálculo de espaço em disco, consulte Exemplo de espaço em disco de índice.

Espaço em disco temporário para operações de índice online

Quando você executa operações de índice on-line, espaço em disco temporário adicional é necessário.

Se um índice clusterizado for criado, reconstruído ou descartado online, um índice temporário não clusterizado será criado para mapear marcadores antigos para novos marcadores. Se a SORT_IN_TEMPDB opção estiver definida como ON, esse índice temporário será criado em tempdb. Se SORT_IN_TEMPDB estiver definido como OFF, o mesmo grupo de arquivos ou esquema de partição que o índice de destino é usado. O índice de mapeamento temporário contém um registro para cada linha da tabela, e seu conteúdo é a união das colunas de marcadores antigas e novas, incluindo uniqueifiers e identificadores de registro e incluindo apenas uma única cópia de qualquer coluna usada em ambos os marcadores. Para obter mais informações sobre operações de índice online, consulte Executar operações de índice online.

Observação

A opção SORT_IN_TEMPDB não pode ser definida para instruções DROP INDEX. O índice de mapeamento temporário é sempre criado no mesmo grupo de arquivos ou esquema de partição que o índice de destino.

As operações de índice online utilizam o versionamento de linhas para isolar a operação de índice dos efeitos de modificações feitas por outras transações. Isso evita a necessidade de solicitar bloqueios de compartilhamento em linhas que foram lidas. As operações simultâneas de atualização e exclusão de usuários durante operações de índice online exigem espaço para registros de versão no tempdb. Para obter mais informações, consulte Executar operações de índice online .