Partilhar via


Estimar o tamanho de um amontoado

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Pode seguir os passos seguintes para estimar a quantidade de espaço necessário 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 seu 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 anulabilidade da coluna. Calcule o seu tamanho:

    • Null_Bitmap = 2 + ((Num_Cols + 7) / 8)

    Apenas a parte inteira desta expressão deve ser usada. Elimine qualquer resto.

  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 controlar cada coluna de comprimento variável. Esta fórmula assume que todas as colunas de comprimento variável estão 100% cheias. Se você antecipar que uma porcentagem menor do espaço de armazenamento da coluna de comprimento variável será usada, poderá ajustar o valor Max_Var_Size por essa porcentagem para obter uma estimativa mais precisa do tamanho geral da tabela.

    Note

    Você pode combinar varchar, nvarchar, varbinaryou sql_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 coluna varchar, nvarchar, varbinaryou sql_variant. 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_Fixo_de_Dados + Tamanho_Variável_de_Dados + Mapa_de_Nulos + 4

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

  6. Calcule o número de linhas por página (8.096 bytes livres por página):

    • Linhas_Por_Página = 8096 / (Tamanho_Da_Linha + 2)

    Como as linhas não abrangem páginas, o número de linhas por página deve ser arredondado para baixo para 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:

    • Núm_Páginas = Núm_Linhas / Linhas_Por_Página

    O número estimado de páginas 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 da pilha (bytes) = 8192 x Num_Pages

Este cálculo não considera as seguintes condições:

  • 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 do IAM usada para rastrear as páginas alocadas a um heap, mas a sobrecarga de espaço é mínima e não há algoritmo para calcular deterministicamente exatamente quantas páginas do IAM serão usadas.

  • Valores de objeto grande (LOB): O algoritmo para determinar exatamente quanto espaço será usado para armazenar os tipos de dados LOB varchar(max), varbinary(max), nvarchar(max), text, ntextxml e image values é complexo. É suficiente apenas adicionar o tamanho médio dos valores de LOB esperados e adicioná-lo ao tamanho total da pilha.

  • Compressão: Não é possível precalcular 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.