오라클 옵티마이저의 소프트파싱(soft parsing)와 하드파싱(hard parsing)
데이터베이스/친절한 SQL 튜닝

오라클 옵티마이저의 소프트파싱(soft parsing)와 하드파싱(hard parsing)

반응형

소프트파싱와 하드파싱


이전장에서 설명하였듯이 옵티마이저가 쿼리를 수행하기 위해서 파싱, 최적화, 로우 소스 생성과정을 통해 내부 프로시저를 만든다.


이렇게 만든 내부프로시저를 반복해서 재사용할 수 있도록 캐싱해두는 메모리 공간을 라이브러리 캐시라고 한다.  


라이브러리캐시는 System Global Area(SGA) 구성요소이다. SGA는 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간이다.






사용자가 작성한 SQL 문장을 실행할 때 SGA에 캐시되어있는 내부 프로시저를 찾으면 바로 사용하는데 이를 소프트 파싱이라고 하고 내부 프로시저가 존재하지 않아 다시 처음부터 파싱, 최적화, 로우 소스 생성 단계를 거쳐야하는 것을 하드파싱이라고 한다.


그럼 소프트 파싱이 왜 하드파싱보다 좋은가?


옵티마이저가 최적의 경로를 찾기위해 사용하는 데이터는 다음과 같다.

  • 테이블, 컬럼, 인덱스 구조에 관한 기본정보

  • 오브젝트 통계 : 테이블, 인덱스, 컬럼 통계

  • 시스템 통계 : CPU 속도, Single Block, Multiblock I/O 속도

  • 옵티마이저 관련 파라미터


그렇기에 이렇게 생성된 내부 프로시저를 한번만 사용하고 버리는 것은 굉장한 낭비이다. 다음 시간에 쿼리를 어떻게 작성하여야 하드파싱을 피하고 소프트 파싱을 하도록 할 수있는지 알아보자.

반응형