공유 메모리 구조 그룹
하나의 오라클 데이터베이스에서 인스턴스의 데이터 및 제어 정보를 포함하고 있다.
SGA는 Buffer Cache, Shared Pool Area, Redo Log Buffer 등으로 구성되어 있다.
사용자가 쿼리를 실행하고 데이터를 가져올 때 먼저 버퍼캐시에 존재하는지 확인한다.
만약 버퍼캐시에 존재하지 않으면 데이터를 디스크에서 가져오고 이를 버퍼캐시에 저장한다.
버퍼 캐시 튜닝의 중요한 포인트는 논리적 읽기 비율을 높이는 것이다.
데이터베이스가 쿼리문을 처리하는 단계(Parse -> execute -> fetch) 중 parse 단계에서 사용된다.
사용자가 사용한 쿼리문, 실행 계획, 테이블, 인덱스 정보 등이 저장이 된다.
Shared Pool Area는 고정영역, 동적영역으로 구분되는데
고정영역은 오라클이 SGA를 관리하는 매커니즘, 오라클 파라미터 정보가 저장된다.
동적영역은 라이브러리 캐쉬와 데이터 딕셔너리 캐쉬가 저장되는데
라이브러리 캐쉬는 유저가 실행한 SQL, Execute Plan 등이 저장되고
데이터 딕셔너리 캐쉬는 테이블, 인덱스, 칼럼, 유저 정보 등이 저장된다.
DDL, DML로 인해 변경된 사항을 로그로 남겨 임시 저장하는 공간이다.
DDL, DML 수행 시 디스크에 저장하기 전에 Redo Log에 먼저 기록을 남겨놓아 오류 상황 발생시 재기록을 하거나 롤백을 하는 역할을 한다.
Redo Log에 저장된 정보는 LGWR(Log Writer)를 통해 디스크에 기록된다.(commit 수행 시)
추가적으로 리두로그는 여러 공간에 적재 될 수 있는데 하나의 공간이 다 차면 다른 공간으로 스위칭하고, 이전의 로그는 언두 로그에 이전 시킨 후 삭제한다.
위의 과정이 발생할 때는 DB의 모든 동작이 정지하므로 성능 이슈가 발생할 수 있다.
만약 이로 인해 버퍼가 느려지면 리두 로그 용량을 늘리거나 리두 로그 용량을 더 쪼개서 이전에 소요되는 시간을 줄여야 한다.
서버에 할당된 메모리로 유저로부터 요청받은 작업 처리시 사용되는 메모리 공간이다.