행위

인덱스 생성 아키텍처

DB CAFE

thumb_up 추천메뉴 바로가기


1 인덱스 생성 아키텍쳐[편집]

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

1.1 PGA(Program Global Area, Process Global Area)[편집]

  1. 서버 프로세스 마다 각각 부여되는 독점으로 사용하는 메모리 공간
  • PGA영역 구성
이름 설명
변수 저장 영역(Stack Space) SQL문장에서 바인드 변수를 사용할 경우, 바인드 변수 값 저장 영역
세션 정보(Session info) 서버 프로세스에 의해 추출 결과 값을 유저 프로세스로 전달을 위해 유저 프로세스의 세션 정보 저장 영역
커서 상태 정보 (Cursor State) 각 프로세스가 사용하는 SQL 파스 정보 저장되어 있는 공유 풀의 물리적 위치 주소 저장영역
SQL작업공간(Work Area) SQL이 요청한 작업 수행 영역

그 중 SQL 작업공간에 가장 많은 공간을 할당하며 정렬작업이 주로 사용되어 정렬 공간(Sort Area)라고 한다.

1.2 SQL 정렬 작업 관련 쿼리[편집]

  1. ORDER BY, GROUP BY, ROLLUP절 사용
  2. DISTINCT, UNION, MINUS, INTERSECT 구문 사용
  3. 분석 함수 사용
  4. 인덱스 생성
  5. 비트맵 인덱스 사용 시 비트맵 연산 수행
  6. 소트 머지 조인, 해시 조인 수행
  7. 통계정보 생성


  • 인덱스 생성 시 사용하는 정렬 공간의 메모리 부족 시 Temp tablespace에 위치한 임시 세그먼트를 사용하게 되며, 이때 디스크I/O가 발생한다.
  • 또한 Temp 영역(PGA내의 정렬공간보다 큰 작업일 시)과 정렬 공간을 사용하여 정렬한 데이터들은 인덱스가 생성 될 테이블스페이스에 내려써지면서 TEMP Segment 타입의 형태와 오라클이 임의로 지정한 이름의 형태로 내려쓰게 된다.
  • 다 내려 쓰여진 인덱스는 유저가 정의한 인덱스명과 index 타입으로 다시 변경 된다.