Compartilhar via


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

O espaço em disco é uma consideração importante ao criar, recriar ou cancelar índices. Um espaço em disco inadequado pode degradar o desempenho ou até mesmo causar falha na operação de índice. Este tópico fornece informações gerais que poderão lhe ajudar 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 requerem espaço adicional em disco

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

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

  • DROP INDEX, quando se está cancelando um índice não-clusterizado.

  • DROP INDEX quando se está cancelando um índice clusterizado offline sem especificar a cláusula MOVE TO e quando não houver índices não-clusterizados.

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

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

Todas as outras operações de índice DDL exigem espaço adicional temporário em disco para serem utilizadas na operação, e espaço permanente em disco para armazenar a nova estrutura ou estruturas de índice. Para obter mais informações sobre estruturas de índice, consulte Arquitetura de estruturas de dados de índice e tabela.

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

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

  • 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 tem base em um índice clusterizado

  • DROP INDEX MOVE TO (Aplica-se somente a índices clusterizados.)

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

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

Quando a classificação for necessária, a classificação será de um índice novo por vez. Por exemplo, quando você recria um índice clusterizado e índices não-clusterizados associados dentro de uma única instrução, os índices são classificados um após o outro. Portanto, o espaço em disco temporário adicional, exigido apenas para classificar, terá que ser tão grande quanto o maior índice da operação. Esse, quase sempre, é o índice clusterizado.

Se a opção SORT_IN_TEMPDB for definida como ON, o maior índice deverá se ajustar à tempdb. Embora essa opção aumente a quantidade de espaço temporário em disco que é usado para criar um índice, pode reduzir o tempo necessário à criação de um índice quando tempdb estiver em um conjunto de discos diverso do banco de dados de usuário. Para obter mais informações sobre classificação em tempdb, consulte tempdb e criação de índice.

Se SORT_IN_TEMPDB for definida como OFF (padrão), todos os índices, inclusive os índices particionados, serão classificados em seu espaço de disco de destino. Apenas o espaço em disco das estruturas do novo índice será requerido.

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

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

Quando se executam operações de índice online é necessário espaço temporário adicional em disco.

Se um índice clusterizado for criado, recriado, ou cancelado online, um índice não-clusterizado temporário será criado para mapear indicadores antigos para os indicadores novos. Se a opção SORT_IN_TEMPDB for definida como ON, esse índice temporário será criado em tempdb. Se SORT_IN_TEMPDB for definida como OFF, o mesmo grupo de arquivos ou esquema de partição do índice de destino serão usados. O índice temporário de mapeamento contém um registro para cada linha da tabela, e seus conteúdos são a união das colunas de indicadores antigas e novas, incluindo uniqueifiers, mais identificadores de registro e incluindo apenas uma cópia única de todas as colunas usadas em ambos os indicadores. Para obter mais informações sobre as operações de índice online, consulte Executando operações de índice online.

ObservaçãoObservação

A opção SORT_IN_TEMPDB não pode ser definida para instruções DROP INDEX. O índice temporário de mapeamento é 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 controle de versão de linha 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 de linhas já lidas. Operações simultâneas de atualização e exclusão de usuários durante operações de índice online necessitam de espaço para o registro de versão em tempdb. Para obter mais informações, consulte Executando operações de índice online e Compreendendo níveis de isolamento com base em controle de versão de linha.