오라클 아키텍처
구성 요소를 클릭하면 오른쪽에 상세 설명이 표시됩니다. 각 영역의 역할과 관련 키워드를 확인해보세요.
Oracle Instance
SGA (System Global Area)
PGA (Program Global Area)
백그라운드 프로세스
Database Buffer Cache
자주 쓰는 데이터를 메모리에 올려두는 캐시 공간
언제 사용되나요?
SELECT로 데이터를 조회하거나, UPDATE/INSERT로 데이터를 변경할 때 항상 거치는 곳입니다. 모든 데이터 읽기/쓰기의 중간 거점이라고 보면 됩니다.
왜 필요한가요?
디스크에서 데이터를 읽는 건 메모리보다 수백~수천 배 느립니다. 한 번 읽은 데이터를 메모리에 보관해두면, 다음에 같은 데이터가 필요할 때 디스크를 다시 읽지 않아도 됩니다. 이것만으로도 성능이 극적으로 개선됩니다.
어떻게 동작하나요?
데이터 파일에서 읽은 데이터 조각(블록)을 메모리에 복사해 둡니다. 새로운 데이터가 필요하면 먼저 이 캐시에 있는지 확인하고, 없을 때만 디스크에서 읽어옵니다. 오래 쓰지 않은 데이터는 자동으로 밀려나고 새 데이터가 그 자리를 차지합니다.
SQL 실행 흐름에서의 위치
아래 실행 흐름의 3, 4단계에서 사용됩니다.
관련 키워드
SQL 실행 흐름
SQL을 실행하면 오라클 내부에서 이런 순서로 처리됩니다.
- 1
SQL 파싱 (Shared Pool)
문법 검사, 권한 확인, 이전에 실행된 적 있는 SQL인지 확인
- 2
실행계획 생성
옵티마이저가 가장 빠른 실행 방법을 결정
- 3
Buffer Cache에서 데이터 찾기
필요한 데이터가 메모리에 있는지 확인
- 4
없으면 디스크에서 읽어오기
메모리에 없는 데이터는 디스크에서 가져와 Buffer Cache에 저장
- 5
PGA에서 정렬/조인 처리
ORDER BY, JOIN 등 중간 계산이 필요하면 개인 작업 공간에서 수행
- 6
변경 내역 기록 (Redo Log Buffer)
INSERT/UPDATE/DELETE가 있으면 복구용 기록 저장
- 7
결과 반환
처리된 결과를 사용자에게 전달