반응형
소프트파싱와 하드파싱
이전장에서 설명하였듯이 옵티마이저가 쿼리를 수행하기 위해서 파싱, 최적화, 로우 소스 생성과정을 통해 내부 프로시저를 만든다.
이렇게 만든 내부프로시저를 반복해서 재사용할 수 있도록 캐싱해두는 메모리 공간을 라이브러리 캐시라고 한다.
라이브러리캐시는 System Global Area(SGA) 구성요소이다. SGA는 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간이다.
사용자가 작성한 SQL 문장을 실행할 때 SGA에 캐시되어있는 내부 프로시저를 찾으면 바로 사용하는데 이를 소프트 파싱이라고 하고 내부 프로시저가 존재하지 않아 다시 처음부터 파싱, 최적화, 로우 소스 생성 단계를 거쳐야하는 것을 하드파싱이라고 한다.
그럼 소프트 파싱이 왜 하드파싱보다 좋은가?
옵티마이저가 최적의 경로를 찾기위해 사용하는 데이터는 다음과 같다.
테이블, 컬럼, 인덱스 구조에 관한 기본정보
오브젝트 통계 : 테이블, 인덱스, 컬럼 통계
시스템 통계 : CPU 속도, Single Block, Multiblock I/O 속도
옵티마이저 관련 파라미터
그렇기에 이렇게 생성된 내부 프로시저를 한번만 사용하고 버리는 것은 굉장한 낭비이다. 다음 시간에 쿼리를 어떻게 작성하여야 하드파싱을 피하고 소프트 파싱을 하도록 할 수있는지 알아보자.
반응형
'데이터베이스 > 친절한 SQL 튜닝' 카테고리의 다른 글
시퀀셜 액세스와 랜덤 액세스 (0) | 2018.06.28 |
---|---|
데이터 저장 구조 및 I/O 메커니즘 (0) | 2018.06.19 |
바인드 변수를 이용한 오라클 SQL 튜닝 소개 (0) | 2018.06.19 |
옵티마이저에게 사용할 인덱스(index) 힌트주기 (0) | 2018.06.18 |
SQL 최적화 과정과 옵티마이저 소개 및 역할안내 (0) | 2018.06.18 |