Estimando o tamanho de um heap
Você pode usar as seguintes etapas para estimar a quantidade de espaço exigida para armazenar dados em um heap:
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 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 em bytes de todas as colunas de comprimento fixo
Num_Variable_Cols = número de colunas de comprimento variável
Max_Var_Size = total máximo em bytes de todas as colunas de comprimento variável
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.
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\_Key\_Size*** são para acompanhamento de cada coluna de comprimento variável. Essa fórmula presume que todas as colunas de comprimento variável estão 100% completas. 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*** de acordo com essa porcentagem para obter uma estimativa mais precisa do tamanho geral da tabela.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/ms190730.alert_note(SQL.110).gif" title="Observação" alt="Observação" /><strong>Observação</strong></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Você pode combinar as colunas varchar, nvarchar, varbinary ou sql_variant que fazem com que a largura total definida da tabela exceda 8.060 bytes. O comprimento 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.</p></td>
</tr>
</tbody>
</table>
Se não houver colunas de comprimento variável, defina ***Variable\_Data\_Size*** como 0.
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.
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.
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.
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 quanto espaço exatamente será usado armazenar os tipos de dados de LOB varchar(max), varbinary(max), nvarchar(max), text, ntext xml e 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 Usar colunas esparsas.
Consulte também
Conceitos
Heaps (Tabelas sem índices clusterizados)
Índices clusterizados e não clusterizados descritos
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