SGA(System Global Area) - 거대한 공유 작업장
- 모든 사용자가 공통으로 사용하는 메모리 영역
- 1) Shared Pool(공유 풀)
- 가장 중요한 두뇌 역할, SQL을 해석하고 실행 계획을 저장
- Library Cache
- 역할: 실행된 SQL 문장과 SQL의 실행 계획을 저장
- 핵심 개념(Soft Parse VS Hard Parse)
- Soft Parse: 캐시에서 실행 계획을 재사용
- Hard Parse: 문법 검사, 권한 검사, 최적 경로 탐색 과정을 모두 거침
- Data Dictionary Cache: 테이블 이름, 컬럼 정보, 사용자 권한 등 메타데이터를 저장
- Database Buffer Cache
- 디스크에서 읽어온 데이터 파일의 내용을(Block)을 저장하는 메모리 공간
- 역할: 디스크는 느리니까, 한번 읽은 건 메모리에 올려두고 사용
- 작동 원리
- Select 요청이 오면 먼저 Buffer Cache를 확인(Logical I/O)
- 없으면 디스크에서 읽어서 이곳에 올림(Physical I/O)
- 튜닝 목표
- 디스크로 가는 횟수(Physical I/O)를 줄이고, 메모리에서 바로 찾는 비율(Buffer Cache HitRatio)를 높이는 것
- Redo Log Buffer
- 데이터 변경이 생길 때, 복구를 위해 변경 내역을 임시로 기록하는 곳
PGA(Program Global Area)
- 각 프로세스마다 개별적으로 할당되는 메모리 -> 공유X
- Soft Area: Hash Join을 할 때 해시 맵을 만드는 공간
- 특징: 이 공간이 부족하면 디스크의 Temp Tablespace를 쓰게 되는데, 이때 성능이 급격히 느려짐
백그라운드 프로세스
- 메모리(SGA)와 디스크(파일) 사이에서 실제 데이터를 나르는 일꾼들
1. DBWR(Database Writer)
- 역할: Buffer Cache에 있는 변경된 데이터(Dirty Block)를 실제 데이터 파일(Disk)에 기록
- 특징: COMMIT 한다고 바로 쓰는 게 아니라 모았다가 한가할 때나 꽉 찼을 때 천천히 씀(Lazy Write)
2. LGWR(Log Writer) - 가장 중요
- 역할: Redo Log Buffer에 있는 로그 기록을 Redo Log File(Disk)에 기록
- 특징: COMMIT 명령어가 떨어지면, LGWR가 로그 파일에 기록을 완료해야 커밋이 성공했다고 사용자에게 알림(Fast Commit 메커니즘의 핵심)
3. PMON(Process Monitor)
- 역할: 사용자가 프로세스가 비정상 종료(강제 종료, 네트워크 끊김)되면 뒤처리를 담당
- 작업: 트랜잭션 롤백, 락(lock) 해제, 리소스 반환
4. SMON(System Monitor)
- 역할: DB 시스템(인스턴스)이 비정상 종료(정전 등) 후 재기동될 때, 인스턴스 복구를 수행, 안쓰는 임시 세그먼트도 청소
5. CKPT(CheckPoint)
- 역할: 지금 어디까지 디스크에 안전하게 저장했는지를 표시함, 데이터 파일과 컨트롤 파일의 헤더에 동기화 정보를 갱신하여, 나중에 복구할 시점을 알려줌
댓글