개체에서 사용하는 공간 관리
IAM(Index Allocation Map) 페이지는 할당 단위에 사용되는 데이터베이스 파일의 4GB 부분에 익스텐트를 매핑합니다. 할당 단위의 유형은 다음 3가지가 있습니다.
- IN_ROW_DATA
힙 또는 인덱스의 파티션을 포함합니다. - LOB_DATA
xml, varbinary(max), varchar(max) 등의 LOB(Large Object) 데이터 형식을 포함합니다. - ROW_OVERFLOW_DATA
varchar, nvarchar, varbinary 또는 sql_variant 열에 저장된 데이터 중 8,060바이트의 행 크기 제한을 초과한 가변 길이의 데이터를 포함합니다.
힙 또는 인덱스의 각 파티션에는 적어도 하나의 IN_ROW_DATA 할당 단위가 있습니다. 또한 힙 또는 인덱스 스키마에 따라 LOB_DATA 또는 ROW_OVERFLOW_DATA 할당 단위도 포함될 수 있습니다. 할당 단위에 대한 자세한 내용은 테이블 및 인덱스 구성을 참조하십시오.
IAM 페이지는 파일에서 4GB 범위를 처리하며 이는 GAM 또는 SGAM 페이지와 동일합니다. 할당 단위에 하나 이상의 파일에서 매핑된 익스텐트가 포함되어 있거나 4GB를 넘는 파일 범위가 포함되어 있으면 하나의 IAM 체인에 여러 IAM 페이지가 연결됩니다. 따라서 각 할당 단위에는 익스텐트가 매핑된 각 파일에 대해 하나 이상의 IAM 페이지가 포함됩니다. 또한 할당 단위에 할당된 파일의 익스텐트 범위가 단일 IAM 페이지가 기록할 수 있는 범위를 초과하는 경우 파일에 IAM 페이지가 두 개 이상 있을 수 있습니다.
IAM 페이지는 필요에 따라 각 할당 단위에 대해 할당되고 파일에서 임의의 위치에 배치됩니다. 시스템 뷰(sys.system_internals_allocation_units)는 할당 단위에 대한 첫 번째 IAM 페이지를 가리킵니다. 해당 할당 단위에 대한 모든 IAM 페이지는 체인으로 연결됩니다.
중요: |
---|
sys.system_internals_allocation_units 시스템 뷰는 내부 전용이며 변경될 수 있습니다. 호환성은 보장되지 않습니다. |
IAM 페이지는 IAM 페이지에 의해 매핑되는 익스텐트의 범위에서 시작 익스텐트를 표시하는 헤더를 갖습니다. 또한 IAM 페이지는 각 비트가 하나의 익스텐트를 나타내는 대형 비트맵을 갖습니다. 맵의 첫째 비트는 범위의 첫째 익스텐트를 나타내고 둘째 비트는 둘째 익스텐트를 나타냅니다. 비트가 0인 경우 해당 익스텐트는 IAM을 소유하는 할당 단위에 할당되지 않은 것입니다. 비트가 1인 경우 해당 익스텐트는 IAM 페이지를 소유하는 할당 단위에 할당된 것입니다.
SQL Server 데이터베이스 엔진에서 새 행을 삽입해야 하는데 현재 페이지에 사용 가능한 공간이 없으면 IAM 및 PFS 페이지를 사용하여 할당할 페이지를 찾거나 힙 또는 텍스트/이미지 페이지의 경우 행을 보관하기에 충분한 공간이 있는 페이지를 찾습니다. 데이터베이스 엔진은 IAM 페이지를 사용하여 할당 단위에 할당된 익스텐트를 찾습니다. 각 익스텐트에 대해 데이터베이스 엔진은 PFS 페이지를 검색하여 사용할 수 있는 페이지가 있는지 확인합니다. 각 IAM 및 PFS 페이지는 많은 수의 데이터 페이지를 포함하므로 데이터베이스에는 IAM 및 PFS 페이지가 거의 없습니다. 이는 IAM 및 PFS 페이지가 대개 SQL Server 버퍼 풀의 메모리에 있으므로 빠르게 검색할 수 있음을 의미합니다. 인덱스의 경우 새 행의 삽입 지점은 인덱스 키에 의해 설정됩니다. 이 경우 앞서 설명한 검색 프로세스가 실행되지 않습니다.
데이터베이스 엔진은 삽입되는 행을 보관하기에 충분한 공간을 가진 기존 익스텐트에서 페이지를 빠르게 찾을 수 없을 때만 할당 단위에 새 익스텐트를 할당합니다. 데이터베이스 엔진은 비례 할당 알고리즘을 사용하여 파일 그룹에서 사용할 수 있는 파일의 익스텐트를 할당합니다. 하나의 파일 그룹에 두 개의 파일이 있고 이 중 한 파일이 다른 파일에 비해 2배의 빈 공간을 가지는 경우 빈 공간이 더 많은 파일에서 두 페이지가 할당되고 빈 공간이 적은 다른 파일에서 한 페이지가 할당되는 방식으로 할당이 수행됩니다. 따라서 파일 그룹의 모든 파일이 유사한 공간 비율을 사용하게 됩니다.
참고 항목
개념
관련 자료
공간 할당 및 다시 사용
sys.allocation_units(Transact-SQL)