본문 바로가기

TUNING

SQL 처리 구조


거의 어드민때 배웠던 내용들과 비슷

몇가지 더 심화된 내용들 추가하겄음..



Shared Pool

SQL 수행 시 자주 사용 되는 정보들을 공유


Library Cache - SQL 및 PL/SQL 정보 공유

Shared SQL Area (Shared Cursor Area)

-> SQL 문장을 실행하기 위해 해당 문장과 관련된 실행 계획과 구문 분석 정보를 보관

    동일한 SQL 문장(부모 커서)은 서로 공유되는데 사용자 정보(자식커서)까지 같아야 공유가 된다.


Share PL/SQL Area


Row Cache (Data Dictionary Cache)

SQL 연산에 참조되는 각종 딕셔너리 정보 공유

Dictionary 에서 필요한 row만 가져오기 때문에 Row Cache 라고도 하는것.



SQL문 처리 과정



1. Parse - 구문 분석

실행 계획을 작성하기 위한 SQL 문장 분석

SQL 실행계획 (SQL Execution Plan / Parse Tree)

실행계획이란? 어떤 방식으로 SQL 문장을 실행할 것인지 정해 놓은 계획

하드디스크에서 어떻게 데이터를 퍼 올릴 것인가를 세우는 계획 = 실행계획

최소한의 비용이 들도록 Optimizer가 작성

인덱스 사용, 두 테이블간의 조인 등 주변 환경을 고려하여 실행 경로를 판단


문법 (Syntax) 검사 / 의미 및 권한 검사 (Semantic) -> Soft/Hard Parse 관계없이 무조건 함


Server Process가 "Parser" 라는 프로그램을 사용해서 검사 후 

검사된 결과는 compile 이 되서 특수한 코드를 변환된다. 이 코드가 바로 Parse Code


Library Cache 확인해 커서 공유 가능한지 확인 -> 있으면 Soft Parse

커서공유

이미 수립된 실행 계획을 공유해서 재 사용함으로서 구문 분석 비용을 감소하고 메모리 사용 ↓

동일한 SQL 문장 

즉, 텍스트 동일 (대소문자 구분, 빈칸, 주석 포함), 사용자, 바인드 변수의 데이터 형식까지 같아야 공유 가능

PL/SQL은 대소문자 구분하지 않는다. 대문자로 통일시켜서 해석


없으면 Parse Code를 Optimizer에게 갖다주고 Optimizer는 Dictionary를 활용해 실행계획 작성 -> Hard Parse



2. Bind

사용자에게 값을 입력받아서 할 때

eg) 고객 마일리지 검사

책 위치 검사 (책만 다르고 똑같은 Table에서 검사하니까)

인터넷 사이트 login (동시에 1000명 접속시, ID+PWD만 다름 --> 실행계획 1000개 필요없이 ID와 PWD만 바꿔서 검사)


바인드 변수가 있는 경우는 값을 할당하고 없는 경우는 다음 단계로 진행



3. Execute



4. Fetch





'TUNING' 카테고리의 다른 글

OWI - Oracle Wait Interface  (0) 2013.03.26
INSTANCE 튜닝 - Data Buffer Cache  (0) 2013.03.19
Optimizer  (0) 2013.03.14
SQL AutoTrace & SQL Trace  (0) 2013.03.12
Tunning 개념  (0) 2013.03.11