본문 바로가기
DB/ORACLE

DB 엔진 - Parsing, hash value

by jun.s.gi 2022. 12. 20.
728x90

사용자가 쿼리문를 수행하면 DB 엔진의 서버(Back ground process)는 첫 번째로 Parsing 작업을 한다.

 

Parsing

1. syntax check : 키워드 오타, 띄어쓰기, 문법검사

2. semantic check : 문법 의미 검사( 키워드 순서 등등 )

3. privileges check : 유저, 객체, 테이블의 권한 검사 (데이터 사전을 통해 검사)

4. parse tree 

5. Execution plan : 실행 계획 / 예시)검색하려는 칼럼의 제약조건이 PK라면 index block을 가져와 실행

 

위 모든 작업은 메모리 SGA의 Shared pool에서 이루어진다.

참조 : https://junsgi.tistory.com/27

 

 

oracle Hash function value

모든 쿼리문마다 Parsing 작업을 거치면 속도가 늦어지고 효율이 좋지 않을 것이다.

oracle DB 엔진 서버는 쿼리문 실행시 쿼리문에 대한 hash function value를 얻어 SGA의 shared pool 공간에 library cache의 context area에 hash value pointer를 확인한 후 동일한 hash value가 있으면 parsing 작업을 생략하고 쿼리문을 수행하여 효율적으로 작업한다(soft parshing, execution).

만약 동일한 hash value가 없으면 Parshing 작업을 수행합니다.(hard parshing)

 

context area가 꽉 차있다면 LRU 알고리즘을 통해 가장 최근까지 참조되지 않은 항목을 삭제하고 새로운 hash value를 삽입합니다.

728x90