힙 크기 예측Estimate the Size of a Heap

다음 단계에 따라 힙에 데이터를 저장하는 데 필요한 공간의 크기를 예측할 수 있습니다.You can use the following steps to estimate the amount of space that is required to store data in a heap:

  1. 테이블의 행 수를 지정합니다.Specify the number of rows that will be present in the table:

    Num_Rows = 테이블의 행 수Num_Rows = number of rows in the table

  2. 고정 길이 및 가변 길이 열 수를 지정하고 이러한 열을 저장하는 데 필요한 공간을 계산합니다.Specify the number of fixed-length and variable-length columns and calculate the space that is required for their storage:

    이러한 각 열 그룹이 데이터 행 내에서 차지하는 공간을 계산합니다.Calculate the space that each of these groups of columns occupies within the data row. 열 크기는 지정된 데이터 형식과 길이에 따라 달라집니다.The size of a column depends on the data type and length specification.

    Num_Cols = 열의 총 수(고정 길이 및 가변 길이)Num_Cols = total number of columns (fixed-length and variable-length)

    Fixed_Data_Size = 모든 고정 길이 열의 총 바이트 크기Fixed_Data_Size = total byte size of all fixed-length columns

    Num_Variable_Cols = 가변 길이 열의 수Num_Variable_Cols = number of variable-length columns

    Max_Var_Size = 모든 가변 길이 열의 전체 바이트 크기Max_Var_Size = maximum total byte size of all variable-length columns

  3. 행의 Null 비트맵 부분은 열의 Null 허용 여부 관리를 위해 예약됩니다.Part of the row, known as the null bitmap, is reserved to manage column nullability. 다음과 같이 이 부분의 크기를 계산합니다.Calculate its size:

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

    이 식의 정수 부분만 사용하고Only the integer part of this expression should be used. 나머지는 무시해야 합니다.Discard any remainder.

  4. 가변 길이 데이터 크기를 계산합니다.Calculate the variable-length data size:

    테이블에 가변 길이 열이 있는 경우에는 해당 행 안에 열을 저장하는 데 사용되는 공간을 측정합니다.If there are variable-length columns in the table, determine how much space is used to store the columns within the row:

    Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_SizeVariable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

    Max_Var_Size 에 추가된 바이트는 각 가변 길이 열을 추적하기 위한 것입니다.The bytes added to Max_Var_Size are for tracking each variable-length column. 이 수식에서는 모든 가변 길이 열이 100% 꽉 찬 것으로 가정합니다.This formula assumes that all variable-length columns are 100 percent full. 사용할 가변 길이 열 저장소 공간 비율이 더 적을 것으로 예상되는 경우 해당 비율로 Max_Var_Size 값을 조정하여 전체 테이블 크기를 보다 정확하게 예측할 수 있습니다.If you anticipate that a smaller percentage of the variable-length column storage space will be used, you can adjust the Max_Var_Size value by that percentage to yield a more accurate estimate of the overall table size.

    참고

    정의된 총 테이블 너비가 8,060바이트를 초과하는 varchar, nvarchar, varbinary또는 sql_variant 열을 결합할 수 있습니다.You can combine varchar, nvarchar, varbinary, or sql_variant columns that cause the total defined table width to exceed 8,060 bytes. 이러한 각 열의 길이는 varchar, nvarchar,varbinary또는 sql_variant 열의 경우 8,000바이트 이내여야 합니다.The length of each one of these columns must still fall within the limit of 8,000 bytes for a varchar, nvarchar,varbinary, or sql_variant column. 그러나 결합된 너비는 테이블의 8,060바이트 제한을 초과할 수 있습니다.However, their combined widths may exceed the 8,060 byte limit in a table.

    가변 길이 열이 없는 경우에는 Variable_Data_Size 를 0으로 설정합니다.If there are no variable-length columns, set Variable_Data_Size to 0.

  5. 전체 행 크기를 계산합니다.Calculate the total row size:

    Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4

    이 수식에서 값 4는 데이터 행의 행 머리글 오버헤드입니다.The value 4 in the formula is the row header overhead of the data row.

  6. 페이지당 행 수를 계산합니다. 페이지당 사용 가능한 바이트 수는 8,096바이트입니다.Calculate the number of rows per page (8096 free bytes per page):

    Rows_Per_Page = 8096 / (Row_Size + 2)Rows_Per_Page = 8096 / (Row_Size + 2)

    행이 여러 페이지에 걸쳐 배치되지는 않으므로 페이지당 행 수는 가장 근사한 정수 값으로 내림하여 계산해야 합니다.Because rows do not span pages, the number of rows per page should be rounded down to the nearest whole row. 수식에서 값 2는 페이지의 슬롯 배열에서 행의 입력을 위한 것입니다.The value 2 in the formula is for the row's entry in the slot array of the page.

  7. 모든 행을 저장하는 데 필요한 페이지 수를 계산합니다.Calculate the number of pages required to store all the rows:

    Num_Pages = Num_Rows / Rows_Per_PageNum_Pages = Num_Rows / Rows_Per_Page

    예상 페이지 수는 가장 근사한 전체 페이지로 올림되어 계산됩니다.The number of pages estimated should be rounded up to the nearest whole page.

  8. 힙에 데이터를 저장하는 데 필요한 공간의 크기를 계산합니다(페이지당 총 8192바이트임).Calculate the amount of space that is required to store the data in the heap (8192 total bytes per page):

    힙 크기(바이트) = 8192 x Num_PagesHeap size (bytes) = 8192 x Num_Pages

    이 계산에서 다음 사항은 고려되지 않습니다.This calculation does not consider the following:

  • 분할Partitioning

    분할에 따른 공간 오버헤드는 최소 수준이지만 계산하기 복잡합니다.The space overhead from partitioning is minimal, but complex to calculate. 분할의 포함 여부는 중요하지 않습니다.It is not important to include.

  • 할당 페이지Allocation pages

    힙에 할당된 페이지를 추적하는 데 사용되는 IAM 페이지가 하나 이상 있지만 공간 오버헤드가 최소 수준이며 사용될 IAM 페이지 수를 정확하게 계산할 수 있는 알고리즘이 없습니다.There is at least one IAM page used to track the pages allocated to a heap, but the space overhead is minimal and there is no algorithm to deterministically calculate exactly how many IAM pages will be used.

  • LOB(Large Object) 값Large object (LOB) values

    LOB 데이터 형식 varchar(max), varbinary(max), nvarchar(max), text, ntextxmlimage 값을 저장하는 데 사용될 공간을 정확하게 측정하는 알고리즘은 복잡합니다.The algorithm to determine exactly how much space will be used to store the LOB data types varchar(max), varbinary(max), nvarchar(max), text, ntextxml, and image values is complex. LOB 값의 예상 평균 크기만 전체 힙 크기에 추가해도 됩니다.It is sufficient to just add the average size of the LOB values that are expected and add that to the total heap size.

  • 압축Compression

    압축된 힙 크기를 미리 계산할 수 없습니다.You cannot pre-calculate the size of a compressed heap.

  • 스파스 열Sparse columns

    스파스 열의 공간 요구 사항은 Use Sparse Columns을 참조하십시오.For information about the space requirements of sparse columns, see Use Sparse Columns.

참고 항목See Also

힙(클러스터형 인덱스가 없는 테이블) Heaps (Tables without Clustered Indexes)
클러스터형 및 비클러스터형 인덱스 소개 Clustered and Nonclustered Indexes Described
클러스터형 인덱스 만들기 Create Clustered Indexes
비클러스터형 인덱스 만들기 Create Nonclustered Indexes
테이블 크기 예측 Estimate the Size of a Table
클러스터형 인덱스의 크기 예측 Estimate the Size of a Clustered Index
비클러스터형 인덱스의 크기 예측 Estimate the Size of a Nonclustered Index
데이터베이스 크기 예측 Estimate the Size of a Database