본문 바로가기
Oracle/아키텍쳐

[인덱스] 인덱스 생성 아키텍처

by 취미툰 2019. 11. 6.
반응형

인덱스 생성 시 아키텍쳐?

 

인덱스를 생성할 때 우선 데이터의 정렬이 필요하며 정렬은 PGA의 정렬공간(Sort Area)을 활용하여 정렬을 한다. 정렬공간보다 큰 정렬작업의 경우에는 Temp Tablespace를 사용하게 된다

 

PGA(Program Global Area, Process Global Area)

서버 프로세스 마다 각각 부여되는 독점으로 사용하는 메모리 공간이다.

PGA는 아래와 같은 영역으로 구성되어 있다.

이름

설명

변수 저장 영역

(Stack Space)

SQL문장에서 바인드 변수를 사용할 경우, 바인드 변수 값 저장 영역

세션 정보

(Session info)

서버 프로세스에 의해 추출 결과 값을 유저 프로세스로 전달을 위해 유저 프로세스의 세션 정보 저장 영역

커서 상태 정보

(Cursor State)

각 프로세스가 사용하는 SQL 파스 정보 저장되어 있는 공유 풀의 물리적 위치 주소 저장영역

SQL작업공간

(Work Area)

SQL이 요청한 작업 수행 영역

 

그 중 SQL 작업공간에 가장 많은 공간을 할당하며 정렬작업이 주로 사용되어 정렬 공간

(Sort Area)라고 한다.

SQL 작업공간을 사용하는 정렬 작업 관련 쿼리는 아래와 같다.

============================================================================

- ORDER BY, GROUP BY, ROLLUP절 사용

- DISTINCT, UNION, MINUS, INTERSECT 구문 사용

- 분석 함수 사용

- 인덱스 생성

- 비트맵 인덱스 사용 시 비트맵 연산 수행

- 소트 머지 조인, 해시 조인 수행

- 통계정보 생성

============================================================================

 

인덱스 생성 시 사용하는 정렬 공간의 메모리 부족 시 Temp tablespace에 위치한 임시 세그먼트를 사용하게 되며, 이때 디스크I/O가 발생한다.

또한 Temp 영역(PGA내의 정렬공간보다 큰 작업일 시)과 정렬 공간을 사용하여 정렬한 데이터들은 인덱스가 생성 될 테이블스페이스에 내려써지면서 TEMP Segment 타입의 형태와 오라클이 임의로 지정한 이름의 형태로 내려쓰게 된다. 다 내려 쓰여진 인덱스는 유저가 정의한 인덱스명과 index 타입으로 다시 변경 된다.

반응형

'Oracle > 아키텍쳐' 카테고리의 다른 글

Character Set  (1) 2020.04.20
오라클 19c 아키텍쳐 소개  (0) 2020.03.05
인덱스 스플릿(INDEX SPLIT)  (0) 2019.12.30
오라클 메모리 파라미터  (0) 2019.04.15
오라클 필수 백그라운드 프로세스  (0) 2019.04.09

댓글