Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  데이터 파일 
작성일시 : 2008. 2. 13. 10:00 | 분류 : SQL Server/Kernel

힘들게 여기까지 왔습니다...
혼자서 공부하려니 정말 힘들군요... 그래도 원리를 아는 사람이 되자라는 생각으로 공부하고 있습니다...
도움을 주신 조현정 과장님 감사합니다...^_________^v
다음번에는 아예 직접 테이블을 까서 볼까 합니다... 즉 페이지들을 직접 다 보는거죠....

목차
Database 기본기 다지기
1. 선언적 데이터 무결성(Declarative Data Integrity)
2. 트랜잭션 프로세싱

트랜잭션 로그와 데이터 복원
1. 데이터 파일 쓰기
2. 로그 파일 쓰기
3. 트랜잭션 로그를 통한 데이터 복구

트랜잭션 로그 파일과 데이터 파일
1. 트랜잭션 로그 파일
2. 데이터 파일

•데이터 구성 단위 : 1 Page = 8 KB

- 1 page는 1 Row 의 크기

- Text 및 Image를 저장할 경우 해당 Row 크기가 8 KB 미만일 경우 해당 Page에 저장 (SQL Server 2005의 경우)
• 개체 할당 단위 : 1 Extent = 8 Pages = 64 KB
• 익스텐트 의 종류

- 혼합 익스텐트 : 여러 개체에 의해 소유 됨 ( 최대 8개)

- 균일 익스텐트 : 한 개체에 의해 소유 됨
•모든 개체는 혼합 익스텐트에 할당 된 후 균일 익스텐트에 할당 됨 (공간 절약)

- Table 데이터 할당에 따른 혼합 익스텐트와 균일 익스텐트 할당 확인
• Table 데이터 할당에 따Table 생성 후 혼합 익스텐트에 데이터가 저장 됨 ( reserved 확인 시 8KB 씩 증가)

데이터 파일을 관리하는 페이지

• 데이터 파일은 파일 헤더 외에 해당 데이터의 페이지를 관리하는 특수한 페이지들이 있다. 8 KB로 관리할 수 있는 범위 안에서 이후 데이터에 대한 여러 가지 설정을 관리하게 되며, 관리 범위가 벗어나면 다시 해당 페이지들이 생성 되고 관리하게 된다.

• PFS
– ntext, text, image 칼럼 할당 여부 및 각 페이지의 빈 공간 크기 기록 (0_PCT_FULL, 50_PCT_FULL, 100_PCT_FULL)
– 약 8,000 페이지를 관리

• GAM 과 SGAM : bit 단위로 Extent에 대한 할당을 관리한다.
– GAM (전역 할당 맵) : 사용 중 (1), 미사용 중 (0)
– SGAM (공유 전역 할당 맵) : 혼합 익스텐트 (1), 균일 익스텐트 or 모든 페이지가 Full (0)
– 약 64,000 bit 를 이용 64,000개의 익스텐트 (4GB) 관리
 
– 테이블이 생성 되어 익스텐트를 할당 받을 때 해당 GAM, SGAM이 변경이 되는데, 이때 잠금(Allocation LocK)이 발생한다.
즉 저장 프로시저 등에서 임시 테이블을 만들고 이를 많은 사용자들이 호출하게 되면 할당 잠금으로 인한 심각한 성능 저하가 발생할 수 있다. 데이터 파일 개수를 증가 시켜 성능 저하 현상을 감소 시킬 수 있다.

•DCM
–데이터베이스 전체 백업 이후 변경된 익스텐트를 추적
–약 64,000 bit 를 이용 64,000개의 익스텐트 (4GB) 관리

•BCM
–대량 복구 모드일 경우에만 사용
–마지막 Backup log 이후 대량 기록 작업에 의해 수정된 익스텐트 추적
–대량 복구 모드에서 log 백업 시 변경된 페이지 (BCM을 통해 추적된 페이지)도 같이 저장하기 때문에 일반 로그 백업에 비해 크기가 클 수 있다.
–약 64,000 bit 를 이용 64,000개의 익스텐트 (4GB) 관리

• IAM
– 인덱스에 의해 사용되는 데이터베이스 파일의 익스텐트를 매핑
– 파일의 고정된 부분에 위치 하지 않음
Sysindexs.FirstIAM 칼럼에서 첫 번째 IAM 페이지를 가르키며, 이 후 Linked List 로 연결되어 있음
(SQL 2005에서 Sysindexs 는 시스템 뷰)
– 해더 + 8개의 페이지 포인터 슬롯 + 익스텐트 범위 맵핑 비트로 구성

• 해더 : IAM에 의해 매핑 되는 첫 번째 익스텐트 주소

• 페이지 포인터 슬롯 : 혼합 페이지 8 개 페이지들에 대한 포인터
개체의 첫 번째 IAM 만 가지고 있음 : Table 생성 시 혼합 익스텐트에 할당 되기 때문

• 익스텐트 범위 맵핑 비트 : IAM 페이지에서 관리되는 익스텐트를 지정 (약 512,000 페이지)
– 제 예상은 sysindex 에 인덱스 주소가 할당이 되고 이를 관리하 페이지가 IAM 일 것 같습니다.
데이터파일이 여러 개일 경우 IAM이 여러 개 존재 하며 이는 raid 0 처럼 들어가는데 이 때문에 약간의 왜곡이 있을 수 있다.

|