Partilhar via


Estimar o tamanho de um heap de dados

Você pode usar as seguintes etapas para estimar a quantidade de espaço necessária para armazenar dados em um heap:

  1. Especifique o número de linhas que estarão presentes na tabela:

    Num_Rows = número de linhas na tabela

  2. 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 total de bytes de todas as colunas de comprimento variável

  3. 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 dessa expressão deve ser usada. Descarte qualquer restante.

  4. 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 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_Size por esse percentual para produzir uma estimativa mais precisa do tamanho geral da tabela.

    Observação

    Você pode combinarvarchar, nvarcharou varbinarysql_variant colunas 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 uma varchar, nvarchar,``varbinaryou sql_variant coluna. 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.

  5. Calcule o tamanho total da linha:

    Tamanho_da_Linha = Tamanho_dados_fixos + Tamanho_dados_variáveis + Mapa_de_nulos + 4

    O valor 4 na fórmula é a sobrecarga do cabeçalho de linha da linha de dados.

  6. 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.

  7. Calcule o número de páginas necessárias para armazenar todas as linhas:

    Num_Páginas = Num_Linhas / Linhas_Por_Página

    O número de páginas estimadas deve ser arredondado para a página inteira mais próxima.

  8. Calcule a quantidade de espaço necessária para armazenar os dados no heap (8.192 bytes totais por página):

    Tamanho do heap (bytes) = 8192 x Num_Pages

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)textntextxml e image valores é complexo. É suficiente apenas adicionar o tamanho médio dos valores LOB esperados e adicioná-lo ao tamanho total do heap.

  • Compactação

    Não é possível calcular previamente o tamanho de um heap comprimido.

  • Colunas esparsas

    Para obter informações sobre os requisitos de espaço de colunas esparsas, consulte Usar Colunas Esparsas.

Consulte Também

Heaps (Tabelas sem índices clusterizados)
Índices clusterizados e não clusterizados descritos
Criar índices clusterizados
Criar índices não clusterizados
Estimar o tamanho de uma tabela
Estimar o tamanho de um índice clusterizado
Estimar o tamanho de um índice não clusterizado
Estimar o tamanho de um banco de dados