1. Explain Plan
2010.06.06 11:08
Chap03 오라클 성능 관리 Intro
DB 튜너
의사
Explain Plan
X-ray
AutoTrace
CT촬영
실제일량 측정 및 SQL 트레이스 MRI
쿼리 변환 및 옵티마이저 힌트
외용약 및 내복약 처방
인덱스 조정
칼을 대지 않는 시술
반정규화 및 진계 테이블 생성
칼을 대는 절개수술
실행계획
- explain plan 명령 사용
- 조건 : plan_table 필요 (oracle 10g 부터 설치 시 기본적으로 생성 - sys.plan_table$)
- 사용 ("set statement_id =" 생략 가능)
sql> explain plan set statement_id = 'query1' forselect * from emp where empno = 7900;
- 과거
- plan_table 의 정보를 포맷팅하기 위해선 별도 SQL 요구 ☞ 스크립트로 저장 후 호출
- 현재
- 내부적으로 명령 수행 처리
- plan_table 의 정보 포맷팅
- Autotrace 및 쿼리 툴에서 실행계획 출력
- 실행계획 결과를 포맷팅하는 Sql
SELECT lpad(id, 4, ' ') || nvl(lpad(parent_id, 6, ' '), ' ')
|| ' ' || lpad(' ', (level-1)*2, ' ')
|| operation || nvl2(options, ' (' || options || ')', '')
|| nvl2(object_name, ' OF '''
|| object_owner || '.' || object_name, NULL)
|| nvl2(object_name, '''', '')
|| decode(parent_id, null, ' Optimizer=' || optimizer)
|| (case
when cost is null and cardinality is null and bytes is null
then ''
else ' (' || nvl2(cost, 'Cost=' || cost, '')
|| nvl2(cardinality, ' Card=' || cardinality, '')
|| nvl2(bytes, ' Bytes=' || bytes, '')
|| ')' end) "Execution Plan"
FROM plan_table p
START WITH statement_id = 'query1' AND id = 0
CONNECT BY prior id = parent_id AND prior statement_id = statement_id
ORDER BY id ;
- 9i 부터 제공하는 실행계획 스크립트 : utlxpls.sql, utlxplp.sql
- 시스템 운영 및 성능관리 Tip
1. SQL을 하드코딩으로 하지 않고 XML 포맷으로 별도 Repository에 저장
2. SQL Repository 저장 SQL에 대해 매일 explain plan 명령을 수행
3. 실행계획을 별도 테이블로 저장 및 활용
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
47 | 2. 트랜잭션 수준 읽기 일관성 | 휘휘 | 2010.06.07 | 19568 |
46 | 3. 비관적 vs. 낙관적 동시성 제어 | 휘휘 | 2010.06.07 | 8210 |
45 | 4. 동시성 구현 사례 | 토시리 | 2010.06.07 | 10934 |
44 | 5. 오라클 Lock | 휘휘 | 2010.06.07 | 26368 |
43 | 7. Response Time Analysis 방법론과 OWI | balto | 2010.06.13 | 8063 |
42 | 8. Statspack / AWR | balto | 2010.06.13 | 12767 |
41 | 9. ASH(Active Session History) | 실천하자 | 2010.06.14 | 15607 |
40 | 11. End-To-End 성능관리 | 휘휘 | 2010.06.14 | 8095 |
39 | 12. 데이터베이스 성능 고도화 정석 해법 | 휘휘 | 2010.06.14 | 7153 |
38 | 5. V$SYSSTAT [1] | 토시리 | 2010.06.14 | 9848 |
37 | 10. V$SQL | 실천하자 | 2010.06.14 | 12677 |
36 | 6. V$SYSTEM_EVENT | 토시리 | 2010.06.14 | 6523 |
35 | 3. 라이브러리 캐시 구조 | balto | 2010.06.28 | 9850 |
34 | 4. 커서 공유 | balto | 2010.06.28 | 9199 |
33 | 1. SQL과 옵티마이저 | 휘휘 | 2010.06.28 | 7218 |
32 | 2. SQL 처리과정 | 휘휘 | 2010.06.28 | 15341 |
31 | 4장. 라이브러리 캐시 최적화 원리 | 휘휘 | 2010.06.28 | 6914 |
30 | 5. 바인드 변수의 중요성 | 실천하자 | 2010.06.28 | 11765 |
29 | 6. 바인드 변수의 부작용과 해법 | 실천하자 | 2010.06.28 | 14668 |
28 | 7. 세션 커서 캐싱 | 토시리 | 2010.06.29 | 10620 |