관리 메뉴

wedul

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

데이터베이스/친절한 SQL 튜닝

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

wedul 2018. 6. 18. 20:11
반응형

소프트파싱와 하드파싱


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


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


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






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


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


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

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

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

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

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


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

반응형