불친절한 SQL 프로그래밍 1부 4장 정리

ssook·2023년 10월 3일
post-thumbnail

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. 처리 과정

파싱

  1. syntax check : SQL 문법을 검사
  2. semantic check : 오브젝트와 권한의 유무를 검사
  3. shared pool check : shared pool의 library cache에 SQL이 수행되어 있는지 검사

hard parse

  1. optimization : SQL의 쿼리 변환과 최적화를 수행
  2. row source generation : SQL 엔진에 의해 수행될 로우 소스를 생성
  3. execution

soft parse

  1. (shared pool)에 저장된 커서를 바로 수행하는 것을 soft parse라고 함.

4-5 각 구문 처리 과정

SELECT문의 각 단계는 아래와 같이 동작함.

  1. 클라이언트 프로세스가 서버 프로세스로 SELECT 문을 저장
    (이 사이에 4.4에서 수행하는 파싱 -> 최적화 -> 실행 과정 진행)
  2. buffer cache에 필요한 데이터 블록이 있는지 확인
  3. 업승면 data file에서 데이터 블록을 읽어 buffer cache에 저장
  4. 결과 집합을 클라이언트 프로세스에 저장

DML문은 아래와 같은 과정으로 수행됨.

LGWR 백그라운드 프로세스와 DBWn 백그라운드 프로세스는 주기적으로 버퍼의 내용을 파일로 저장

  1. 클라이언트 프로세스가 서버 프로세스로 DML 문을 전달.
  2. undo 세그먼트를 할당하고 buffer cache에 필요한 블록이 있는지 확인.
  3. 없으면 data file에서 블록을 읽어 buffer cache에 저장하고 변경할 블록에 락을 설정
  4. 데이터 블록과 undo 블록의 변경 사항을 redo log buffer에 기록
  5. undo 블록에 변경 전 데이터를 저장하고 데이터 블록을 변경
  6. 변경 결과를 클라이언트 프로세스에 저장.

commit문의 각 단계는 아래와 같은 과정으로 수행됨.
1. 클라이언트 프로세스가 서버 프로세스로 commit 문 전달
2. 서버 프로세스가 LGWR 백그라운드 프로세스로 처리를 요청
3. redo log buffer가 online redo log 파일에 모두 저장되면 변경된 블록의 락을 해제
4. 완료 여부를 클라이언트 프로세스로 전달.

profile
개발자에서, IT Business 담당자로. BrSE 업무를 수행하고 있습니다.

0개의 댓글