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.
Você pode usar as seguintes etapas para estimar a quantidade de espaço necessária para armazenar dados em um índice clusterizado:
Calcule o espaço usado para armazenar dados no nível folha do índice clusterizado.
Calcule o espaço usado para armazenar informações de índice para o índice clusterizado.
Total dos valores calculados.
Etapa 1. Calcular o espaço usado para armazenar dados no nível folha
Especifique o número de linhas que estarão presentes na tabela:
Num_Rows = número de linhas na tabela
Especifique o número de colunas de comprimento fixo e de comprimento variável e calcule o espaço necessário para o armazenamento:
Calcule o espaço que cada um desses grupos de colunas ocupa dentro da linha de dados. O tamanho de uma coluna depende do tipo de dados e da especificação de comprimento.
Num_Cols = número total de colunas (comprimento fixo e comprimento variável)
Fixed_Data_Size = tamanho total de bytes de todas as colunas de comprimento fixo
Num_Variable_Cols = número de colunas de comprimento variável
Max_Var_Size = tamanho máximo de bytes de todas as colunas de comprimento variável
Se o índice clusterizado não for único, considere a coluna uniqueifier.
O diferenciador único é uma coluna anulável de comprimento variável. Ele será não nulo e 4 bytes de tamanho em linhas que têm valores de chave não específicos. Esse valor faz parte da chave de índice e é necessário para garantir que cada linha tenha um valor de chave exclusivo.
= Num_ColsNum_Cols + 1
= Num_Variable_ColsNum_Variable_Cols + 1
= Max_Var_SizeMax_Var_Size + 4
Essas modificações pressupõem que todos os valores não serãouniques.
Parte da linha, conhecida como bitmap nulo, é reservada para gerenciar a nulidade da coluna. Calcule seu tamanho:
Null_Bitmap = 2 + ((Num_Cols + 7) / 8)
Somente a parte inteira da expressão anterior deve ser usada; descarte o restante.
Calcule o tamanho dos dados de comprimento variável:
Se houver colunas de comprimento variável na tabela, determine quanto espaço é usado para armazenar as colunas dentro da linha:
Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size
Os bytes adicionados a Max_Var_Size são para acompanhar cada coluna variável. Essa fórmula pressupõe que todas as colunas de comprimento variável estejam 100% cheias. Se você prever que uma porcentagem menor do espaço de armazenamento de coluna de comprimento variável será usada, você poderá ajustar o valor Max_Var_Size por esse percentual para produzir uma estimativa mais precisa do tamanho geral da tabela.
Observação
Você pode combinar
varchar,nvarcharouvarbinarysql_variantcolunas que fazem com que a largura total da tabela definida exceda 8.060 bytes. O comprimento de cada uma dessas colunas ainda deve estar dentro do limite de 8.000 bytes para umavarchar,varbinaryousql_variantcoluna, e 4.000 bytes paranvarcharcolunas. No entanto, suas larguras combinadas podem exceder o limite de 8.060 bytes em uma tabela.Se não houver colunas de comprimento variável, defina Variable_Data_Size como 0.
Calcule o tamanho total da linha:
Tamanho_da_Linha = Tamanho_dados_fixos + Tamanho_dados_variáveis + Mapa_de_nulos + 4
O valor 4 é a sobrecarga de cabeçalho de linha de uma linha de dados.
Calcular o número de linhas por página (8.096 bytes gratuitos por página):
Rows_Per_Page = 8096 / (Row_Size + 2)
Como as linhas não abrangem páginas, o número de linhas por página deve ser arredondado para baixo até a linha inteira mais próxima. O valor 2 na fórmula é para a entrada da linha na matriz de slots da página.
Calcule o número de linhas gratuitas reservadas por página, com base no fator de preenchimento especificado:
Free_Rows_Per_Page = 8096 x ((100 - Fill_Factor) / 100) / (Row_Size + 2)
O fator de preenchimento usado no cálculo é um valor inteiro em vez de uma porcentagem. Como as linhas não abrangem páginas, o número de linhas por página deve ser arredondado para baixo até a linha inteira mais próxima. À medida que o fator de preenchimento aumenta, mais dados serão armazenados em cada página e haverá menos páginas. O valor 2 na fórmula é para a entrada da linha na matriz de slots da página.
Calcule o número de páginas necessárias para armazenar todas as linhas:
Num_Leaf_Pages = Num_Rows / (Rows_Per_Page - Free_Rows_Per_Page)
O número de páginas estimadas deve ser arredondado para a página inteira mais próxima.
Calcule a quantidade de espaço necessária para armazenar os dados no nível folha (8.192 bytes totais por página):
Leaf_space_used = 8192 x Num_Leaf_Pages
Etapa 2. Calcular o espaço usado para armazenar informações de índice
Você pode usar as seguintes etapas para estimar a quantidade de espaço necessária para armazenar os níveis superiores do índice:
Especifique o número de colunas de comprimento fixo e de comprimento variável na chave de índice e calcule o espaço necessário para o armazenamento:
As colunas principais de um índice podem incluir colunas de comprimento fixo e comprimento variável. Para estimar o tamanho da linha de índice de nível interior, calcule o espaço que cada um desses grupos de colunas ocupa dentro da linha de índice. O tamanho de uma coluna depende do tipo de dados e da especificação de comprimento.
Num_Key_Cols = número total de colunas de chave (comprimento fixo e comprimento variável)
Fixed_Key_Size = tamanho total de bytes de todas as colunas de chave de comprimento fixo
Num_Variable_Key_Cols = número de colunas de chave de comprimento variável
Max_Var_Key_Size = tamanho máximo de bytes de todas as colunas de chave de comprimento variável
Considere qualquer identificador de unicidade necessário se o índice não for único.
A coluna uniqueifier é anulável e de comprimento variável. Ele será não nulo e terá tamanho de 4 bytes em linhas que têm valores de chave de índice não únicos. Esse valor faz parte da chave de índice e é necessário para garantir que cada linha tenha um valor de chave exclusivo.
Num_Key_Cols = Num_Key_Cols + 1
Num_Variable_Key_Cols = Num_Variable_Key_Cols + 1
= Max_Var_Key_SizeMax_Var_Key_Size + 4
Essas modificações pressupõem que todos os valores não serãouniques.
Calcule o tamanho nulo do bitmap:
Se houver colunas anuláveis na chave de índice, parte da linha de índice será reservada para o bitmap nulo. Calcule seu tamanho:
Index_Null_Bitmap = 2 + ((número de colunas na linha de índice + 7) / 8)
Somente a parte inteiro da expressão anterior deve ser usada. Descarte qualquer restante.
Se não houver colunas de chave anuláveis, defina Index_Null_Bitmap como 0.
Calcule o tamanho dos dados de comprimento variável:
Se houver colunas de comprimento variável no índice, determine quanto espaço é usado para armazenar as colunas dentro da linha de índice:
Variable_Key_Size = 2 + (Num_Variable_Key_Cols x 2) + Max_Var_Key_Size
Os bytes adicionados a Max_Var_Key_Size são para acompanhar cada coluna de comprimento variável. Essa fórmula pressupõe que todas as colunas de comprimento variável estejam 100% cheias. Se você prever que uma porcentagem menor do espaço de armazenamento de coluna de comprimento variável será usada, você poderá ajustar o valor Max_Var_Key_Size por esse percentual para produzir uma estimativa mais precisa do tamanho geral da tabela.
Se não houver colunas de comprimento variável, defina Variable_Key_Size como 0.
Calcule o tamanho da linha de índice:
Index_Row_Size = Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1 (para a sobrecarga do cabeçalho de uma linha de índice) + 6 (para o ponteiro do ID da página filho)
Calcular o número de linhas de índice por página (8.096 bytes gratuitos por página):
Index_Rows_Per_Page = 8096 / (Index_Row_Size + 2)
Como as linhas de índice não abrangem páginas, o número de linhas de índice por página deve ser arredondado para baixo até a linha inteira mais próxima. O número 2 na fórmula é para a entrada da linha na matriz de slots da página.
Calcule o número de níveis no índice:
Non-leaf_Levels = 1 + log Index_Rows_Per_Page (Num_Leaf_Pages / Index_Rows_Per_Page)
Arredondar esse valor até o número inteiro mais próximo. Esse valor não inclui o nível folha do índice clusterizado.
Calcule o número de páginas não folhas no índice:
Num_Index_Pages = ∑Nível (Num_Leaf_Pages /(Num_Linhas_Index_Por_PáginaNível))
em que 1 <= Nível <= Níveis não folha
Arredondar cada soma até o número inteiro mais próximo. Como um exemplo simples, considere um índice onde Num_Leaf_Pages = 1000 e Index_Rows_Per_Page = 25. O primeiro nível de índice acima do nível de folha armazena 1000 linhas de índice, com uma linha de índice por página de folha, e 25 linhas de índice cabem em cada página. Isso significa que 40 páginas são necessárias para armazenar essas 1000 linhas de índice. O próximo nível do índice deve armazenar 40 linhas. Isso significa que requer 2 páginas. O nível final do índice deve armazenar 2 linhas. Isso significa que requer uma página. Isso fornece 43 páginas de índice que não são folhas. Quando esses números são usados nas fórmulas anteriores, o resultado é o seguinte:
Non-leaf_Levels = 1 + log25 (1000 / 25) = 3
Num_Index_Pages = 1000/(253)+ 1000/(252) + 1000/(251) = 1 + 2 + 40 = 43, que é o número de páginas descritas no exemplo.
Calcular o tamanho do índice (8192 bytes totais por página):
Index_Space_Used = 8192 x Num_Index_Pages
Etapa 3. Total dos valores calculados
Total dos valores obtidos das duas etapas anteriores:
Tamanho do índice clusterizado (bytes) = Leaf_Space_Used + Index_Space_used
Esse cálculo não considera o seguinte:
Particionamento
A sobrecarga de espaço do particionamento é mínima, mas complexa de calcular. Não é importante incluir.
Páginas de alocação
Há pelo menos uma página IAM usada para acompanhar as páginas alocadas para um heap, mas a sobrecarga de espaço é mínima e não há nenhum algoritmo para calcular deterministicamente exatamente quantas páginas IAM serão usadas.
Valores de LOB (Objeto Grande)
O algoritmo para determinar exatamente quanto espaço será usado para armazenar os tipos
varchar(max)de dados LOB,varbinary(max), ,nvarchar(max),text,ntextexmlimagevalores é complexo. É suficiente apenas adicionar o tamanho médio dos valores LOB esperados, multiplicar por Num_Rows e adicioná-lo ao tamanho total do índice clusterizado.Compactação
Não é possível calcular previamente o tamanho de um índice compactado.
Colunas esparsas
Para obter informações sobre os requisitos de espaço de colunas esparsas, consulte Usar Colunas Esparsas.
Consulte Também
Índices clusterizados e não clusterizados descritos
Estimar o tamanho de uma tabela
Criar índices clusterizados
Criar índices não clusterizados
Estimar o tamanho de um índice não clusterizado
Estimar o tamanho de um heap
Estimar o tamanho de um banco de dados