거의 어드민때 배웠던 내용들과 비슷
몇가지 더 심화된 내용들 추가하겄음..
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 |