오라클 아키텍처

구성 요소를 클릭하면 오른쪽에 상세 설명이 표시됩니다. 각 영역의 역할과 관련 키워드를 확인해보세요.

Oracle Instance

SGA (System Global Area)

Database Buffer Cache
Shared Pool
Redo Log Buffer
Large Pool

PGA (Program Global Area)

Sort Area
Hash Area

백그라운드 프로세스

Database Buffer Cache

자주 쓰는 데이터를 메모리에 올려두는 캐시 공간

언제 사용되나요?

SELECT로 데이터를 조회하거나, UPDATE/INSERT로 데이터를 변경할 때 항상 거치는 곳입니다. 모든 데이터 읽기/쓰기의 중간 거점이라고 보면 됩니다.

왜 필요한가요?

디스크에서 데이터를 읽는 건 메모리보다 수백~수천 배 느립니다. 한 번 읽은 데이터를 메모리에 보관해두면, 다음에 같은 데이터가 필요할 때 디스크를 다시 읽지 않아도 됩니다. 이것만으로도 성능이 극적으로 개선됩니다.

어떻게 동작하나요?

데이터 파일에서 읽은 데이터 조각(블록)을 메모리에 복사해 둡니다. 새로운 데이터가 필요하면 먼저 이 캐시에 있는지 확인하고, 없을 때만 디스크에서 읽어옵니다. 오래 쓰지 않은 데이터는 자동으로 밀려나고 새 데이터가 그 자리를 차지합니다.

SQL 실행 흐름에서의 위치

아래 실행 흐름의 3, 4단계에서 사용됩니다.

관련 키워드

데이터 블록캐시디스크 I/O

SQL 실행 흐름

SQL을 실행하면 오라클 내부에서 이런 순서로 처리됩니다.

  1. 1

    SQL 파싱 (Shared Pool)

    문법 검사, 권한 확인, 이전에 실행된 적 있는 SQL인지 확인

  2. 2

    실행계획 생성

    옵티마이저가 가장 빠른 실행 방법을 결정

  3. 3

    Buffer Cache에서 데이터 찾기

    필요한 데이터가 메모리에 있는지 확인

  4. 4

    없으면 디스크에서 읽어오기

    메모리에 없는 데이터는 디스크에서 가져와 Buffer Cache에 저장

  5. 5

    PGA에서 정렬/조인 처리

    ORDER BY, JOIN 등 중간 계산이 필요하면 개인 작업 공간에서 수행

  6. 6

    변경 내역 기록 (Redo Log Buffer)

    INSERT/UPDATE/DELETE가 있으면 복구용 기록 저장

  7. 7

    결과 반환

    처리된 결과를 사용자에게 전달