힙 크기 예측

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

다음 단계를 사용하여 힙에 데이터를 저장하는 데 필요한 공간의 양을 예측할 수 있습니다.

  1. 테이블에 있을 행 수를 지정합니다.

    Num_Rows = 테이블의 행 수

  2. 고정 길이 및 가변 길이 열 수를 지정하고 이러한 열을 스토리지하는 데 필요한 공간을 계산합니다.

    이러한 각 열 그룹이 데이터 행 내에서 차지하는 공간을 계산합니다. 열의 크기는 데이터 형식 및 길이 사양에 따라 달라집니다.

    Num_Cols = 열의 총 수(고정 길이 및 가변 길이)

    Fixed_Data_Size = 모든 고정 길이 열의 총 바이트 크기

    Num_Variable_Cols = 가변 길이 열의 수

    Max_Var_Size = 모든 가변 길이 열의 최대 총 바이트 크기

  3. 행의 Null 비트맵 부분은 열의 Null 허용 여부 관리를 위해 예약됩니다. 다음과 같이 이 부분의 크기를 계산합니다.

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

    이 식의 정수 부분만 사용해야 합니다. 나머지를 삭제합니다.

  4. 가변 길이 데이터 크기를 계산합니다.

    테이블에 가변 길이 열이 있는 경우 행 내에 열을 저장하는 데 사용되는 공간을 결정합니다.

    Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

    Max_Var_Size에 추가된 바이트는 각 가변 길이 열을 추적하기 위한 것입니다. 이 수식에서는 모든 가변 길이 열이 100% 가득 찼다고 가정합니다. 가변 길이 열 스토리지 공간의 더 작은 비율을 사용할 것으로 예상되는 경우 Max_Var_Size 값을 해당 백분율로 조정하여 전체 테이블 크기를 보다 정확하게 예측할 수 있습니다.

    참고 항목

    정의된 총 테이블 너비가 8,060바이트를 초과하는 varchar, nvarchar, varbinary또는 sql_variant 열을 결합할 수 있습니다. 이러한 각 열의 길이는 varchar, nvarchar, varbinary 또는 sql_variant 열의 경우 8,000바이트 이내여야 합니다. 그러나 결합된 너비는 테이블의 8,060 바이트 제한을 초과할 수 있습니다.

    가변 길이 열이 없으면 Variable_Data_Size 0으로 설정합니다.

  5. 총 행 크기를 계산합니다.

    = Row_Size Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4

    수식의 값 4는 데이터 행의 행 머리글 오버헤드입니다.

  6. 페이지당 행 수를 계산합니다(페이지당 8096바이트 사용 가능).

    Rows_Per_Page = 8096 / (Row_Size + 2)

    행은 페이지에 걸쳐 있지 않으므로 페이지당 행 수를 가장 가까운 전체 행으로 반올림해야 합니다. 수식의 값 2는 페이지의 슬롯 배열에 있는 행의 항목에 대한 값입니다.

  7. 모든 행을 저장하는 데 필요한 페이지 수를 계산합니다.

    Num_Pages = Num_Rows / Rows_Per_Page

    예상 페이지 수는 가장 가까운 전체 페이지로 반올림되어야 합니다.

  8. 힙에 데이터를 저장하는 데 필요한 공간의 양을 계산합니다(페이지당 총 바이트 수 8192바이트).

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

이 계산에서는 다음을 고려하지 않습니다.

  • 분할

    분할의 공간 오버헤드는 최소화되지만 계산하기는 복잡합니다. 포함해야 하는 것은 중요하지 않습니다.

  • 할당 페이지

    힙에 할당된 페이지를 추적하는 데 사용되는 IAM 페이지가 하나 이상 있지만 공간 오버헤드는 최소화되며 사용되는 IAM 페이지 수를 정확하게 계산하는 알고리즘은 없습니다.

  • LOB(큰 개체) 값

    LOB 데이터 형식 varchar(max), varbinary(max), nvarchar(max), text, ntextxmlimage 값을 저장하는 데 사용될 공간을 정확하게 측정하는 알고리즘은 복잡합니다. 예상되는 LOB 값의 평균 크기를 추가하고 총 힙 크기에 추가하는 것만으로도 충분합니다.

  • 압축

    압축된 힙의 크기를 미리 계산할 수 없습니다.

  • 스파스 열

    스파스 열의 공간 요구 사항에 대한 자세한 내용은 스파스 열 사용을 참조 하세요.

참고 항목

힙(클러스터형 인덱스가 없는 테이블)
클러스터형 및 비클러스터형 인덱스 설명
클러스터형 인덱스 만들기
비클러스터형 인덱스 만들기
테이블 크기 예측
클러스터형 인덱스의 크기 예측
비클러스터형 인덱스의 크기 예측
데이터베이스 크기 예측