Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Sempre que um índice é criado, reconstruído ou descartado, 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. Espaço em disco temporário adicional para operações de classificação também pode ser necessário. Para obter mais informações, consulte Requisitos de espaço em disco para operações DDL de índice.
Neste exemplo, os requisitos de espaço em disco para criar um índice clusterizado são determinados.
Suponha que as seguintes condições sejam verdadeiras antes de criar o índice clusterizado:
- A tabela existente (heap) contém 1 milhão de linhas. Cada linha tem 200 bytes de comprimento.
- O índice A não agrupado contém 1 milhão de linhas. Cada linha tem 50 bytes de comprimento.
- O índice B não agrupado contém 1 milhão de linhas. Cada linha tem 80 bytes de comprimento.
- A opção de criação de memória de índice está definida como 2 MB.
- Um valor de fator de preenchimento de 80 é usado para todos os índices novos e existentes. Isso significa que as páginas estão 80% cheias.
Observação
Como resultado da criação de um índice clusterizado, os dois índices não clusterizados devem ser reconstruídos para substituir o indicador de linha pela nova chave de índice clusterizada.
Cálculos de espaço em disco para uma operação de índice offline
Nas etapas a seguir, o espaço em disco temporário a ser usado durante a operação de índice e o espaço em disco permanente para armazenar os novos índices são calculados. Os cálculos apresentados são aproximados; Os resultados são arredondados para cima e consideram apenas o tamanho do nível da folha índice. A tilde (~) é usada para indicar cálculos aproximados.
Determine o tamanho das estruturas de origem.
- Heap: 1 milhão * 200 bytes ~ 200 MB
- Índice não clusterizado A: 1 milhão * 50 bytes / 80% ~ 63 MB
- Índice B não clusterizado: 1 milhão * 80 bytes / 80% ~ 100 MB
Tamanho total das estruturas existentes: 363 MB
Determine o tamanho das estruturas de índice de objetivo. Suponha que a nova chave clusterizada tem 24 bytes de comprimento, incluindo um uniqueifier. O indicador de linha (8 bytes de comprimento) em ambos os índices não clusterizados será substituído por esta chave clusterizada.
Índice clusterizado: 1 milhão * 200 bytes / 80% ~ 250 MB
Índice não clusterizado A: 1 milhão * (50 - 8 + 24) bytes / 80% ~ 83 MB
Índice B não clusterizado: 1 milhão * (80 - 8 + 24) bytes / 80% ~ 120 MB
Tamanho total das novas estruturas: 453 MB
O espaço total em disco necessário para suportar as estruturas de origem e de destino durante a operação de índice é de 816 MB (363 + 453). O espaço atualmente alocado para as estruturas fonte será desalocado após a confirmação da operação de índice.
Determine espaço em disco temporário adicional para classificação.
Os requisitos de espaço são mostrados para classificar em
tempdb(comSORT_IN_TEMPDBdefinido comoON) e classificar no local de destino (comSORT_IN_TEMPDBdefinido comoOFF).Quando
SORT_IN_TEMPDBestiver definido comoON,tempdbdeve ter espaço em disco suficiente para armazenar o maior índice (1 milhão * 200 bytes ~ 200 MB). O fator de preenchimento não é considerado na operação de classificação.Espaço em disco adicional (no
tempdblocal) igual ao valor de memória de criação de índice = 2 MB.Tamanho total do espaço em disco temporário definido
SORT_IN_TEMPDBcomoON~ 202 MB.Quando
SORT_IN_TEMPDBdefinido comoOFF(padrão), os 250 MB de espaço em disco já considerados para o novo índice na etapa 2 são usados para classificação.Espaço em disco adicional (no local de destino) igual ao valor de memória de criação de índice = 2 MB.
Tamanho total do espaço em disco temporário definido
SORT_IN_TEMPDBcomoOFF= 2 MB.
Usando tempdb, um total de 1018 MB (816 + 202) seria necessário para criar os índices agrupados e não agrupados. Embora o uso tempdb aumente a quantidade de espaço em disco temporário usado para criar um índice, ele 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. Para obter mais informações sobre como usar tempdb, consulte a Opção SORT_IN_TEMPDB para Índices.
Sem utilizar tempdb, seria necessário um total de 818 MB (816 + 2) para criar os índices agrupados e não agrupados.
Cálculos de espaço em disco para uma operação de índice clusterizado online
Quando você cria, descarta ou reconstrói um índice clusterizado online, é necessário espaço em disco adicional para criar e manter um índice de mapeamento temporário. Esse índice de mapeamento temporário contém um registro para cada linha da tabela e seu conteúdo é a união das colunas de marcador antiga e nova.
Para calcular o espaço em disco necessário para uma operação de índice clusterizado online, siga as etapas mostradas para uma operação de índice offline e adicione esses resultados aos resultados da etapa a seguir.
Determine o espaço para o índice de mapeamento temporário.
Neste exemplo, o marcador antigo é o ID da linha (RID) da pilha (8 bytes) e o novo marcador é a chave de agrupamento (24 bytes, incluindo um unificador ). Não há colunas sobrepostas entre os marcadores antigos e novos.
Tamanho do índice de mapeamento temporário = 1 milhão * (8 bytes + 24 bytes) / 80% ~ 40 MB.
Esse espaço em disco deve ser adicionado ao espaço em disco necessário no local de destino se
SORT_IN_TEMPDBestiver definido comoOFF, ou setempdbSORT_IN_TEMPDBestiver definido comoON.
Para obter mais informações sobre o índice de mapeamento temporário, consulte Requisitos de espaço em disco para operações DDL de índice.
Resumo do espaço em disco
A tabela a seguir resume os resultados dos cálculos de espaço em disco.
| Operação de índice | Requisitos de espaço em disco para os locais das seguintes estruturas |
|---|---|
Operação de índice offline com SORT_IN_TEMPDB = ON |
Espaço total durante a operação: 1.018 MB - Tabela e índices existentes: 363 MB 1 - tempdb: 202 MB 1- Novos índices: 453 MB Espaço total necessário após a operação: 453 MB |
Operação de índice offline com SORT_IN_TEMPDB = OFF |
Espaço total durante a operação: 816 MB - Tabela e índices existentes: 363 MB 1 - Novos índices: 453 MB Espaço total necessário após a operação: 453 MB |
Operação de índice on-line com SORT_IN_TEMPDB = ON |
Espaço total durante a operação: 1.058 MB - Tabela e índices existentes: 363 MB 1 - tempdb (inclui índice de mapeamento): 242 MB*- Novos índices: 453 MB Espaço total necessário após a operação: 453 MB |
Operação de índice on-line com SORT_IN_TEMPDB = OFF |
Espaço total durante a operação: 856 MB - Tabela e índices existentes: 363 MB 1 - Índice de mapeamento temporário: 40 MB 1 - Novos índices: 453 MB Espaço total necessário após a operação: 453 MB |
1 Este espaço é desalocado após a confirmação da operação de índice.
Este exemplo não considera nenhum espaço em disco temporário adicional necessário em tempdb para os registros de versão criados por operações simultâneas de atualização e exclusão de utilizadores.