Admin::Allocate Extent, 익스텐드 할당&공간관리
SQL Server의 데이터베이스는 데이터 파일과 로그 파일로 구성됨.
로그 파일은 앞에서 설명한 VLF로 구성된다.
반면, 데이터 파일의 가장 작은 단위는 페이지이다.
연속적인 8개의 페이지로 extent가 구성된다.
extents는 'single-extent' (균일 익스텐트), 'mixed extent'(혼합 익스텐트) 로 나뉜다.
균일 익스텐트는 하나의 개체가 8개의 페이지를 모두 사용 하며, 혼합 익스텐트는 하나의 익스텐트에 여러 개체가 들어간다.
1 extents = 8 page = 1 page * 8kb = 64kb
테이블을 만들때는 익스텐트 단위로 일어나는데 SQL은 처음 테이블을 만들때는 항상 혼합 익스텐트 내에서 생성한다.
테이블이 커져가서 8 개의 page를 채훈 후 부터 균일 인스텐트를 할당한다.
* GAM, SGAM
SQL Server는 전역 할당 맵(GAM) 과 공유 전역 할당 맵(SGAM) 이라는 두가지 할당 맵을 사용하여 익스텐트, GAM, SGAM은 각 1bit로 하나의 익스텐트를 관리함으로 총 6400 익세텐트를 관리 (4GB)
GAM : 어떤 익스텐트가 할당되었는지 관리
SGAM : 어떤 익스텐트가 현재 혼합 익스텐트로 사용되는지, 빈 페이지를 가지는지 여부 관리
GAM비트 | SGAM비트 | 해당 익스텐트의 상태 |
1 | 0 | 비어있음, 사용중이지 않음 |
0 | 0 | 균일 익스텐트 또는 환전 혼합 익스텐트 |
0 | 1 | 빈 페이지가 있는 혼합 익스텐트 |
1. 신규 테이블 생성시 : 0:1 이 있는것에 할당함. 즉, SGAM이 1인것을 할당
SGAM : 1인것이 존재 하지 않으면, 1:0 인것을 찾아서 할당하고 비트 패턴을 0:1 로 변경한다.
2. GAM과 SGAM은 데이터 파일 하나씩 있으므로 해당 DB의 파일 개수를 늘려주면 SGAM에 대한 요구가 분산되어 보다 좋은 성능을 낼 수 잇다.
임시테이블은 모두 tempdb에서 처리됨으로 tempdb의 데이터 파일을 여러개로 분리하는 것이 많은 수의 임시 테이블 요구에 대한 할당 잠금 측면에서 유리하다.
* PFS (Page Free Space)
힙, ntext, text, image 컬럼의 페이지가 할당되었는지 여부와 각 페이지의 빈 공간 크기를 기록한다.
하나의 PFS 페이지는 약 8000 page = 1000 익스텐트 관리하며, 파일이 커지면 연결 리스트 구조로 새로운 PFS 페이지가 추가된다.
* BCM (Bulked Change Map)
마지막 Backup log 문 이후 대량 기록 작업에 의해 수정된 익스텐트를 관리, 대량 로그 복구 모델일 때 사용됨
* DCM
마지막 bakcup dataase (full backup) 이후에 변경된 익스텐트를 관리하는 페이지이며, 차등 백업의 대상 익스텐트를 찾기 위해 사용,
BCM, DCM도 1bit로 하나의 익스텐트를 관리함으로 총6400 익스텐트 관리하게 된다.
* IAM (Index Allocation Map)
개체가 사용하는 데이터베이스 파일의 익스텐트를 매핑한다.
'Common Admin' 카테고리의 다른 글
admin::여러 TCP 포트에서 수신하도록 데이터베이스 엔진 구성 (0) | 2009.12.03 |
---|---|
SQL Server Maximum Capacity (0) | 2009.12.03 |
SQL Server DBA Checklist (0) | 2009.10.11 |
[TechNet세미나] Windows Server 2003 ClusterService Troubleshooting (0) | 2009.07.24 |