인공지능/SQL

SQL문 처리 단계

해피밀세트 2020. 3. 18. 18:27
반응형

 

 

 

1. parse

  • 문법(syntax)검사 -> 의미(semantic)검사 -> 권한 검사 -> 실행 계획 생성
  • 메모리에 실행 계획 만든다.
  • 실행계획 : 데이터를 어떻게 찾아오는게 가장 좋은지(데이터 엑세스방법 : rowidscan / fulltablescan)

 

 

2. bind

  • 변수에 실제값이 들어가는 단계
  • SQL 문장의 변수처리 : select * from employees where employee_id = :v_id;
  • 변수처리하는 이유는 실행계획을 sharing하기 위해서이다.
  • sql문장의 실행계획을 sharing하려면 대소문자, 공백문자, tap, enter, 주석문자, 힌트, 상수값, 리터럴값이 맞아야한다.
  • 실행계획 sharing 못하면 실행계획을 만들어야한다. -> CPU 사용량과 디스크 I/O 사용량 증가 -> 속도 느려짐
  • 따라서 변수처리를 해야하는데 sql 비절차언어이므로 변수처리가 어렵다. 따라서 다른 응용프로그램을 같이 써야한다.
  • 변수처리하지 않으면 bind 단계를 스킵한다.

 

 

3. execute

  • 이단계까지는 실행 계획이 무효화가 발생하지 않도록 핀을 찍어놓는다.
  • 실행계획이 무효화 발생될때 : 통계수집, 테이블 drop, 테이블 구조바뀜, 인덱스 생성/인덱스 삭제 

 

 

4. fetch

  • 무효화 발생해도 상관없으므로 해제
  • 메모리에 올려놓은걸 유저에게 전달한다.
  • 디스크 I/O발생(block을 찾고 변경하는 작업)
  • DML 패치단계가 없다.
  • DML 처리단계 : parse -> bind -> execute(I/O발생)
반응형

'인공지능 > SQL' 카테고리의 다른 글

오라클 SQL - Top - N 분석  (0) 2020.03.19
오라클 SQL 오류 모음  (0) 2020.02.29
오라클 SQL - ROWID와 INDEX  (0) 2020.02.16
오라클 SQL - Data 처리 방법  (0) 2020.02.14
오라클 SQL - 시퀀스(Sequence) 사용하기  (0) 2020.02.13