인덱스 생성 아키텍처
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 인덱스 생성 아키텍쳐[편집]
- 인덱스를 생성할 때 데이터 정렬이 필요하며 정렬은 PGA의 정렬공간(Sort Area)을 이용하여 정렬
- 정렬공간보다 큰 작업인 경우에는 Temp Tablespace를 사용
1.1 PGA(Program Global Area, Process Global Area)[편집]
- 서버 프로세스 마다 각각 부여되는 독점으로 사용하는 메모리 공간
- PGA영역 구성
이름 | 설명 |
---|---|
변수 저장 영역(Stack Space) | SQL문장에서 바인드 변수를 사용할 경우, 바인드 변수 값 저장 영역 |
세션 정보(Session info) | 서버 프로세스에 의해 추출 결과 값을 유저 프로세스로 전달을 위해 유저 프로세스의 세션 정보 저장 영역 |
커서 상태 정보 (Cursor State) | 각 프로세스가 사용하는 SQL 파스 정보 저장되어 있는 공유 풀의 물리적 위치 주소 저장영역 |
SQL작업공간(Work Area) | SQL이 요청한 작업 수행 영역
그 중 SQL 작업공간에 가장 많은 공간을 할당하며 정렬작업이 주로 사용되어 정렬 공간(Sort Area)라고 한다. |
1.2 SQL 정렬 작업 관련 쿼리[편집]
- 인덱스 생성 시 사용하는 정렬 공간의 메모리 부족 시 Temp tablespace에 위치한 임시 세그먼트를 사용하게 되며, 이때 디스크I/O가 발생한다.
- 또한 Temp 영역(PGA내의 정렬공간보다 큰 작업일 시)과 정렬 공간을 사용하여 정렬한 데이터들은 인덱스가 생성 될 테이블스페이스에 내려써지면서 TEMP Segment 타입의 형태와 오라클이 임의로 지정한 이름의 형태로 내려쓰게 된다.
- 다 내려 쓰여진 인덱스는 유저가 정의한 인덱스명과 index 타입으로 다시 변경 된다.