Compartilhar via


Estimar o tamanho de um heap

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Banco de Dados SQL no Microsoft Fabric

Você pode usar as seguintes etapas para estimar a quantidade de espaço exigida 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 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 tamanho variável)

    Fixed_Data_Size = tamanho total em bytes de todas as colunas de tamanho fixo

    Num_Variable_Cols = número de colunas de tamanho variável

    Max_Var_Size = total máximo em bytes de todas as colunas de tamanho variável

  3. Parte da linha, conhecida como bitmap nulo, é reservada para gerenciar a nulabilidade da coluna. Calcule seu tamanho:

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

    Somente a parte do inteiro dessa expressão deve ser usada. Descarte todo o restante.

  4. Calcule o tamanho dos dados de comprimento variável:

    Se houver colunas de comprimento variável na tabela, determine quanto espaço será 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 servem para acompanhar cada coluna de tamanho variável. Essa fórmula presume que todas as colunas de comprimento variável estão 100% completas. Se você prevê que um percentual menor do espaço de armazenamento da coluna de tamanho variável será usado, pode ajustar o valor Max_Var_Size de acordo com esse percentual para obter uma estimativa mais precisa do tamanho geral da tabela.

    Observação

    É possível combinar colunas varchar, nvarchar, varbinaryou sql_variant que fazem com que a largura total da tabela definida exceda 8.060 bytes. O tamanho de cada uma dessas colunas ainda deve ficar dentro do limite de 8.000 bytes para uma coluna varchar, nvarchar, varbinary ou sql_variant. Entretanto, as larguras combinadas podem exceder o limite de 8.060 bytes em uma tabela.

    Se não houver colunas de tamanho variável, defina Variable_Data_Size como 0.

  5. Calcule o tamanho total da linha:

    Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 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):

    Rows_Per_Page = 8096 / (Row_Size + 2)

    Como as linhas não se estendem por mais de uma página, 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 slot da página.

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

    Num_Pages = Num_Rows / Rows_Per_Page

    O número de páginas estimado deve ser arredondado para cima, até a página inteira mais próxima.

  8. Calcule a quantidade de espaço necessária para armazenar os dados no heap (total de 8.192 bytes 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 para ser calculada. Não é importante incluí-la.

  • Páginas de alocação

    Há pelo menos uma página de IAM usada para rastrear as páginas alocadas a um heap, mas a sobrecarga de espaço é mínima e não há nenhum algoritmo para calcular de forma determinista exatamente quantas páginas de IAM serão usadas.

  • Valores de LOB (Objeto Grande)

    O algoritmo para determinar exatamente quanto espaço será usado para armazenar os tipos de dados LOB varchar(max), varbinary(max), nvarchar(max), texte ntextxmle valores image é complexo. É suficiente apenas para adicionar o tamanho médio dos valores de LOB esperados e adicioná-lo ao tamanho do heap.

  • Compactação

    Não é possível pré-calcular o tamanho de um heap compactado.

  • Colunas esparsas

    Para obter informações sobre os requisitos de espaço de colunas esparsas, consulte Use Sparse Columns.

Confira 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