01. SQL실행원리
다음글: bbayo.tistory.com/14
클라이언트 어플리케이션이 DB서버로 SQL을 전달하면 Server Process가 구문을 실행하고 결과값을 반환
* 클라이언트 어플리케이션
오라클에게 SQL에 대한 처리를 요청하는 외부 프로세스로 sqlplus, Toad와 같은 tool일 수 도있고 실제 웹 애플리케이션일 수도 있다.
* Server Process
SQL을 받아 검색, 변경 등의 처리를 하는 프로세스
1. SELECT 문
SELECT COL1, COL2 ...
FROM 테이블명
WHERE 조건;
Parse → Bind → Execute → Fetch
[Parse]
select 문의 문법을 검사하고 실행계획을 확인
Shared Pool에 있는 Library Cache에서 실행계획을 찾는경우 Soft Parse (커서공유)라고 함
Soft Parse가 실패하면 Optimizer가 실행계획을 세움 = Hard Parse
[Bind]
Bind변수 처리
[Execute]
실행계획을 실행하는 단계
SQL을 실행할 때는 해당 테이블이 모두 메모리 (Database Buffer Cache)에 존재해야함
필요한 테이블을 하드디스크의 데이터파일에서 SGA의 DB Buffer Cache로 가져오는 과정을 Execute과정 이라고 함
[Fetch]
DB Buffer Cache로 가져온 블록 중 필요한 데이터만 PGA로 가져오는 과정
오라클이 데이터를 저장하고 가져오는 최소단위는 블록
데이터파일의 기본 블록 크기는 8KB (10g기준) = 블록 하나에 한글(2byte) 최대 4096 글자가 들어갈 수 있음
여기서 필요한 데이터만 가져오는 과정을 Fetch라고 함
2. UPDATE 문
UPDATE 테이블명
SET COL1=변경할 값
WHERE 조건;
Parse → Bind → Execute
SQL을 파싱하고 필요 블록을 DB Buffer Cache로 가져오는 과정까지는 동일
update가 발생하면 서버 프로세스가 undo segment를 확보하고
변경내용은 redo log buffer에 저장
undo segment에는 변경 전 내용을 기록
DB Buffer Cache에 변경내용을 적용
※ 「오라클 백업과 복구」 참조