-
[SQL] 소프트 파싱 / 하드 파싱Database 2023. 7. 5. 23:54

Oracle Library Cache 시스템 공유 메모리에서 SQL과 실행계획이 캐싱되는 영역을 Oracle에서는 라이브러리 캐시(Library Cache),SQL Server에서는 프로시저 캐시(Procedure Cache)라고 부른다.

사용자가 SQL을 실행하면 제일 먼저 SQL Parser가 SQL문장에 문법적 오류가 없는지 검사(Syntax검사)를 한다.
문법적으로 오류가 없으면 의미상 오류가 있는지(Semantic 검사)를 한다.
예를 들어 존재하지 않거나 권한 없는 객체를 사용했는지 또는 존재하지 않는 컬럼을 사용했는지 등의 검사를 한다.
Syntax검사,Semantic 검사를 마치면 사용자가 발핼한 SQL과 그 실행계획이 라이브러리 캐시에 캐싱됐는지를 확인한다.
만약 캐싱돼 있다면 무거운 최적화 과정을 거치지 않고 곧바로 실행 할 수 있다.
소프트 파싱(Soft Parsing) : SQL과 실행 계획을 캐시에서 찾아 곧바로 실행단계로 넘어가는 경우 (Shared Pool에 분석된 SQL 정보가 존재 O)
하드 파싱(Hard Parsing) : SQL과 실행계획을 캐시에서 찾지 못해 최적화 과정을 거치고 나서 실행단계로 넘어가는 경우 (Shared Pool에 분석된 SQL 정보가 존재 X)라이브러리 캐시는 해시구조로 관리되기 때문에 SQL마다 해시 값에 따라 여러 해시 버킷으로 나누어 저장된다.
SQL을 찾을 때는 SQL 문장을 해시 함수에 입력해서 반환된 해시 값을 이용해 해당 해시버킷을 탐색하면 된다.
'Database' 카테고리의 다른 글
[SQL] SQL 처리과정 (0) 2023.07.06 [SQL] 옵티마이저 (0) 2023.07.06 [SQL] 인덱스 스캔 방식 (0) 2023.07.05 [SQL] 내장 함수 - 문자형 함수 (0) 2023.07.04 [SQL] 내장 함수 - 단일행 함수(Single-Row Function) (0) 2023.07.04