4-1. 역사 ~ 4.2 특징
- SQL : 관계형 데이터베이스 표준 언어, 데이터 분석 분야의 표준 언어로 구조화된 영문 질의어임.
4-3. 종류
해당 책은 SELECT 문을 별도의 구문으로 구분함.
- SELECT : SELECT
- DML : INSERT, UPDATE, DELETE, MERGE
- TCS : COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION
- DDL : CREATE, ALTER, DROP, TRUNCATE, COMMENT
- DCL : GRANT, REVOKE
- SCS : ALTER SESSION, SET ROLE
4-4. 처리 과정
파싱
- syntax check : SQL 문법을 검사
- semantic check : 오브젝트와 권한의 유무를 검사
- shared pool check : shared pool의 library cache에 SQL이 수행되어 있는지 검사
hard parse
- optimization : SQL의 쿼리 변환과 최적화를 수행
- row source generation : SQL 엔진에 의해 수행될 로우 소스를 생성
- execution
soft parse
- (shared pool)에 저장된 커서를 바로 수행하는 것을 soft parse라고 함.
4-5 각 구문 처리 과정
SELECT문의 각 단계는 아래와 같이 동작함.
- 클라이언트 프로세스가 서버 프로세스로 SELECT 문을 저장
(이 사이에 4.4에서 수행하는 파싱 -> 최적화 -> 실행 과정 진행)
- buffer cache에 필요한 데이터 블록이 있는지 확인
- 업승면 data file에서 데이터 블록을 읽어 buffer cache에 저장
- 결과 집합을 클라이언트 프로세스에 저장
DML문은 아래와 같은 과정으로 수행됨.
LGWR 백그라운드 프로세스와 DBWn 백그라운드 프로세스는 주기적으로 버퍼의 내용을 파일로 저장
- 클라이언트 프로세스가 서버 프로세스로 DML 문을 전달.
- undo 세그먼트를 할당하고 buffer cache에 필요한 블록이 있는지 확인.
- 없으면 data file에서 블록을 읽어 buffer cache에 저장하고 변경할 블록에 락을 설정
- 데이터 블록과 undo 블록의 변경 사항을 redo log buffer에 기록
- undo 블록에 변경 전 데이터를 저장하고 데이터 블록을 변경
- 변경 결과를 클라이언트 프로세스에 저장.
commit문의 각 단계는 아래와 같은 과정으로 수행됨.
1. 클라이언트 프로세스가 서버 프로세스로 commit 문 전달
2. 서버 프로세스가 LGWR 백그라운드 프로세스로 처리를 요청
3. redo log buffer가 online redo log 파일에 모두 저장되면 변경된 블록의 락을 해제
4. 완료 여부를 클라이언트 프로세스로 전달.