2013년 상반기 - 오라클 성능 트러블슈팅 스터디

{section}
{column:width=80%}

스터디 개요

스터디 목적

  • 오라클 성능 문제를 트러블슈팅하기 위해 필요한 기본적인 개념과 테크닉을 키위기 위한 기본 베이스 습득.
  • 오라클 내부적인 동작 원리를 추적하여 내부적으로 프로세싱되는 개념을 스스로 한번쯤 생각해 볼 수 있는 기회 마련.
  • Oracle DBMS 동작원리를 이해하고 활용하며 습득한 지식을 공유.

스터디 인원

스터디 운영자

  • ~jongmali: 오라클클럽에서 (TeLl2/김종원)이라는 닉네임으로 활동을 하고 있습니다.

스터디 일정 및 장소

  • 스터디 장소 : 상암동 한솔 교육장
  • 스터디 기간 : 2013년 4월 ~ 2013년 7월
  • 스터디 일자 : 월 3회 토요일 10시 ~ 13시

스터디 교재

스터디 계획

  • 오라클 메커니즘에 대한 완벽한 이해.
  • 오라클 Logical Optimizer에 대한 이해.
  • 스터디 중간중간 스터디 내용에 대해 개인적으로 궁금했던 사항이나 혹은 현재 진행하고 있는 프로젝트에 대한 지식 공유나 토론의 장 마련.

스터디 교재

스터디 회칙

스터디 회칙

스터디 회비

  • 아래의 스터디원 회비를 입금해야지 스터디에 참여 할 수 있습니다.
    • 오라클클럽 정기회비 : 2만원
    • 월회비 : 1만원

지각/결석 벌금제도

  • 지각
    • 10분당 1,000원씩 벌금 부과 최대 3,000원 (10분:1,000, \~20분:2,000, 21분 \:3,000)
  • 결석
    • 사전 통보 후 불참 : 4,000원 (사전 통보는 꼭 게시판을 통해서 해야 합니다.)
    • 연락 없이 무단 결석 : 10,000원

스터디 일정

오라클 코어 Oracle Core : DBA와 개발자를 위한 필수 메커니즘

회차대제목소제목발표자스터디일자장소시간진행여부
1회차ch1.시작하기시작하기이지웅2013년 4월 6일상암동10시(/)
ch2. 언두와리두기본적인데이터변경(/)
트랜잭션 요구사항(ACID)(/)
리두단순성(/)
언두복잡성(/)
ch3. 트랜잭션과 일관성트랜잭셩과 언두김종원(/)
데이터블록방문 및 언두(/)
Commit SCN(/)
LOB(/)
2회차ch4. 락과 래치자료구조이정헌2013년 4월 13일상암동10시(/)
래치(O)(/)
래치(/)
락(Lock)(/)
요약(/)
3회차ch5.캐시와 복사메모리관리~openlsw2013년 4월 27일상암동10시(/)
Multiple 데이터 캐시(/)
Working Data Set(/)
LRU_TCH 알고리즘(/)
데이터 검색(/)
4회차ch6.기록과 복구LGWR홍정민2013년 5월 4일상암동10시(/)
DBWR(/)
DBWR의 상호작용(/)
복구(/)
5회차ch7.파싱과 최적화SQL의 이해장태길2013년 5월 25일상암동10시(/)
딕셔너리 캐시(/)
Parse Call 이란 무엇인가(/)
라이브러리 캐시(/)
파싱과 최적화(/)
ch8.RAC와 몰락Big Picture~openlsw(/)
다양한 안전장치(/)
RAC의 핵심(/)
RAC 동작 원리(/)
복구(/)
시퀀스(/)
덤프 및 디버깅Ora debug(/)
SQL을 이용한 덤프방법(/)

The Logical Optimizer : 성능향상을 위한 트랜스포머의 SQL 재작성 전략

회차대제목소제목발표자스터디일자장소시간진행여부
6회차Part1. Query Transformation Concept1.1 Logical Optimizer(Transformer)란 무엇인가
1.2 Query Transformation을 알아야 하는 이유
1.3 Query Transformation의 개념
1.4 Query Transformer의 구조
1.5 DBMS_XPLAN.DISPLAY_CURSOR
1.6 내가 사용한 Hint가 무시되는 이유
1.7 10053 Event Trace
장태길2013년 6월 1일상암동10시(x)
Part2. Query Transformation Concept2.AHeuristic Query Transformation이란?
2.1. CSE (Common Subexpression Elimination) Where절에서 or 사용시 중첩된 조건절은 제거하라
2.2 JE (Join Elimination) 직접 사용하지 않는 테이블은 SQL에서 삭제하라
2.3. OE (Outer Join Table Elimination) 불필요한 Outer쪽 테이블은 삭제하라
2.4 OJE (Outer-Join Elimination) 의미 없는 Outer 조인을 Inner 조인으로 바꾸어라
2.5 OBYE (Order By Elimination) 불필요한 Order By를 삭제하라
2.6. DE (Distinct Eliminate) 불필요한 Distinct 를 제거하라
2.7 CNT (Count(column) To Count( * )) Count(컬럼) 사용시 해당 컬럼이 Not Null인 경우 Count( * )로 대체하라
2.8 FPD (Filter Push Down) 조건절을 인라인뷰 내부로 이동시켜라
홍정민10시(x)
7회차2.9 TP(Transitive Predicate) 조인절을 이용하여 다른 테이블에 상수조건을 생성시켜라
2.10 SVM(Simple View Merging) Simple View를 해체하여 메인 쿼리와 통합하라
2.11 LV(Lateral View) View를 Scalar 서브쿼리처럼 사용하라
2.12 FOJC(Full Outer Join Conversion) Full Outer 조인을 Union All로 변경하라
2.13 NFOJ(Native Full Outer Join) Full Outer 조인시 중복 Scan되는 테이블을 제거하라
2.14 OT(Operator Transformation) 특정 연산자를 다른 연산자로 변환하라
2.15 PM(Predicate Move Around) Where 조건을 다른 뷰에 이동시켜라
2.16 WCOTR (Where Current Of To Rowid) Where Current Of 를 사용하여 Index Scan을 회피하라
이정헌2013년 6월 15일상암동10시(x)
2.24 EJE(Enhanced JE) Semi Anti 조인과 ANSI Style로 조인 할 경우도 JE가 가능하다김종원(x)
8회차2.31 GBEP (Group By Extension Pruning) 불필요한 Rollup 이나 CUBE를 삭제하라
2.32 GSTT* (Group Sets Using Temp Table) Grouping Sets 사용시 Temp 테이블에 적재후 이를 반복해서 사용하라
2.33 GSTU* (Grouping Sets To UNION) Grouping Sets를 UNION ALL로 변환하라
2.34 GSTR* (Grouping Sets To Rollup) Grouping Sets를 Rollup으로 변환하라
이지웅2013년 6월 22일상암동10시(x)
2.B Part 2를 마무리 하며이지웅(x)
Part3. Cost Based Query Transformation3.2 PPU(Predicate Pull Up) 비용이 많이 드는 조건절을 뷰 외부로 이동시켜라~openlsw(x)
9회차3.3 OR-Expansion (OR To Union All Conversion) OR 조건을 이용하여 Union All로 변경시켜라
3.4 OR-Expansion Using Function* (NVL, DECODE, RANK To Union All) NVL, DECODE, RANK 함수를 사용한 조건절을 이용하여 Union All 로 변경하라
3.5 TE (Table Expansion) 여러 개의 파티션을 액세스 할 때 파티션 마다 Union All로 분리해서 Index scan을 할지 FTS를 할지 판단하라
3.6 SJC (Set To Join Conversion) 집합연산을 조인으로 바꾸어라
3.7 CSU (Complex Subquery Unnesting) 복잡한 서브쿼리를 조인으로 바꾸어라
~openlsw2013년 6월 29일상암동10시(x)
10회차3.8 CVM (Complex View Merging) Distinct나 Group By가 있는 뷰를 해체하라
3.9 JPPD Union View Union을 사용한 뷰에 조인 조건을 침투시켜라
3.10 JPPD Union All View Union All을 사용한 뷰에 조인 조건을 침투시켜라
3.11 JPPD Outer Join View 뷰에 Outer 조인을 사용한 경우 조인 조건을 침투시켜라
3.12 Multi Level JPPD 뷰 내부에 또 다른 뷰가 있더라도 메인 쿼리의 조인 조건을 침투시켜라
3.13 JPPD Extension Distinct나 Group By, Semi,Anti-join을 사용한 뷰에 조인 조건을 침투시켜라
김종원2013년 7월 6일상암동10시(x)
3.14 GBP (Group By Placement) Group By를 먼저 수행하고 Join 하라장태길(x)
Part4. Cost Based Query Transformation Internal4.1 Search Type의 개념과 종류
4.2 Search Type 분석에 사용될 SQL
4.3 Exhaustive Type 전략
4.4 Iterative Type 전략
4.5 Linear Type 전략
4.6 Two_Pass Type 전략
4.7 off option 전략
4.8 On Option 전략
4.9 State Space란 무엇인가?
4.10 CA*(Cost Annotation)이란 무엇인가
4.11 메모리 관리
이정헌(x)
11회차4.12 Interleaving 선 변환 과정이 끝나면 후 변환 과정을 연이어 수행하라
4.13 Juxtapostion 배타적인 변환을 동시에 고려하여 Cost가 낮은 것을 선택하라
4.14 실무에 적용하기
4.A Part 4를 마무리 하며
홍정민2013년 7월 13일미정미정(x)
부록과 색인실무에서의 Query Transformation 이슈
미해결 과제
(x)

{column}
{column:width=20%}

{column}
{section}

하위 페이지
[2013.04.04]ch1.시작하기 (by kkabong) [2013.04.04]ch2. 언두와리두 (by kkabong) [2013.04.04]기본적인데이터변경 (by kkabong) [2013.04.04]트랜잭셩과 언두 (by jongmali) [2013.04.06]데이터블록방문 및 언두 (by jongmali) [2013.04.12]Commit SCN (by kkabong) [2013.04.12]Working Data Set (by openlsw) [2013.04.12]메모리관리 (by openlsw) [2013.04.12]Multiple 데이터 캐시 (by openlsw) [2013.04.12]LRU_TCH 알고리즘 (by openlsw) [2013.04.12]데이터 검색 (by openlsw) [2013.04.12]LOB (by kkabong) [2013.04.12]자료구조 (by hun1361) [2013.04.12]래치 (by hun1361) [2013.04.12]락(Lock) (by hun1361) [2013.04.12]요약 (by hun1361) [2013.05.22]RAC의 핵심 (by openlsw) [2013.04.13]래치(O) (by hun1361) [2013.04.25]LGWR (by dolphhong) [2013.04.25]DBWR (by dolphhong) [2013.04.26]DBWR의 상호작용 (by dolphhong) [2013.04.26]복구 (by dolphhong) [2013.05.04]SQL의 이해 (by darkturtle) [2013.05.10]Ora debug (by jongmali) [2013.05.10]SQL을 이용한 덤프방법 (by jongmali) [2013.05.10]딕셔너리 캐시 (by darkturtle) [2013.05.10]Parse Call 이란 무엇인가 (by darkturtle) [2013.05.10]라이브러리 캐시 (by darkturtle) [2013.05.10]파싱과 최적화 (by darkturtle) [2013.05.22]Big Picture (by openlsw) [2013.05.22]다양한 안전장치 (by openlsw) [2013.05.22]RAC 동작 원리 (by openlsw) [2013.05.22]RAC 복구 (by openlsw) [2013.05.22]시퀀스 (by openlsw) [2013.05.29]2.8 FPD (Filter Push Down) 조건절을 인라인뷰 내부로 이동시켜라 (by dolphhong) [2013.06.01]Part1. Query Transformation Concept (by darkturtle) [2013.06.11]2.16 WCOTR (Where Current Of To Rowid) Where Current Of 를 사용하여 Index Scan을 회피하라 (by hun1361) [2013.06.11]2.15 PM(Predicate Move Around) Where 조건을 다른 뷰에 이동시켜라 (by hun1361) [2013.06.11]2.14 OT(Operator Transformation) 특정 연산자를 다른 연산자로 변환하라 (by hun1361) [2013.06.11]2.13 NFOJ(Native Full Outer Join) Full Outer 조인시 중복 Scan되는 테이블을 제거하라 (by hun1361) [2013.06.11]2.12 FOJC(Full Outer Join Conversion) Full Outer 조인을 Union All로 변경하라 (by hun1361) [2013.06.11]2.11 LV(Lateral View) View를 Scalar 서브쿼리처럼 사용하라 (by hun1361) [2013.06.11]2.10 SVM(Simple View Merging) Simple View를 해체하여 메인 쿼리와 통합하라 (by hun1361) [2013.06.11]2.9 TP(Transitive Predicate) 조인절을 이용하여 다른 테이블에 상수조건을 생성시켜라 (by hun1361) [2013.06.20]3.2 PPU(Predicate Pull Up) 비용이 많이 드는 조건절을 뷰 외부로 이동시켜라 (by openlsw) [2013.06.21]2.31 GBEP (Group By Extension Pruning) 불필요한 Rollup 이나 CUBE를 삭제하라 (by kkabong) [2013.06.21]2.32 GSTT* (Group Sets Using Temp Table) Grouping Sets 사용시 Temp 테이블에 적재후 이를 반복해서 사용하라 (by kkabong) [2013.06.21]2.33 GSTU* (Grouping Sets To UNION) Grouping Sets를 UNION ALL로 변환하라 (by kkabong) [2013.06.21]2.34 GSTR* (Grouping Sets To Rollup) Grouping Sets를 Rollup으로 변환하라 (by kkabong) [2013.06.21]2.B Part 2를 마무리 하며 (by kkabong) [2013.06.27]3.7 CSU (Complex Subquery Unnesting) 복잡한 서브쿼리를 조인으로 바꾸어라 (by openlsw) [2013.06.28]3.14 GBP (Group By Placement) Group By를 먼저 수행하고 Join 하라 (by darkturtle) [2013.06.29]3.3 OR-Expansion (OR To Union All Conversion) OR 조건을 이용하여 Union All로 변경시켜라 (by openlsw) [2013.06.29]3.4 OR-Expansion Using Function* (NVL, DECODE, RANK To Union All) NVL, DECODE, RANK 함수를 사용한 조건절을 이용하여 Union All 로 변경하라 (by openlsw) [2013.06.29]3.5 TE (Table Expansion) 여러 개의 파티션을 액세스 할 때 파티션 마다 Union All로 분리해서 Index scan을 할지 FTS를 할지 판단하라 (by openlsw) [2013.06.29]3.6 SJC (Set To Join Conversion) 집합연산을 조인으로 바꾸어라 (by openlsw) [2013.07.04]4.1 Search Type의 개념과 종류 (by hun1361) [2013.07.04]4.2 Search Type 분석에 사용될 SQL (by hun1361) [2013.07.04]4.3 Exhaustive Type 전략 (by hun1361) [2013.07.04]4.4 Iterative Type 전략 (by hun1361) [2013.07.04]4.5 Linear Type 전략 (by hun1361) [2013.07.04]4.6 Two_Pass Type 전략 (by hun1361) [2013.07.04]4.7 off option 전략 (by hun1361) [2013.07.04]4.8 On Option 전략 (by hun1361) [2013.07.04]4.9 State Space란 무엇인가? (by hun1361) [2013.07.04]4.10 CA*(Cost Annotation)이란 무엇인가 (by hun1361) [2013.07.04]4.11 메모리 관리 (by hun1361) [2013.07.06]3.8 CVM (Complex View Merging) Distinct나 Group By가 있는 뷰를 해체하라 (by jongmali) [2013.07.06]3.9 JPPD Union View Union을 사용한 뷰에 조인 조건을 침투시켜라 (by jongmali) [2013.07.06]3.10 JPPD Union All View Union All을 사용한 뷰에 조인 조건을 침투시켜라 (by jongmali) [2013.07.06]3.11 JPPD Outer Join View 뷰에 Outer 조인을 사용한 경우 조인 조건을 침투시켜라 (by jongmali) [2013.07.06]3.12 Multi Level JPPD 뷰 내부에 또 다른 뷰가 있더라도 메인 쿼리의 조인 조건을 침투시켜라 (by jongmali) [2013.07.06]3.13 JPPD Extension Distinct나 Group By, Semi,Anti-join을 사용한 뷰에 조인 조건을 침투시켜라 (by jongmali) [2013.07.13]미해결 과제 (by dolphhong) [2013.07.11]4.14 실무에 적용하기 (by dolphhong) [2013.07.11]4.12 Interleaving 선 변환 과정이 끝나면 후 변환 과정을 연이어 수행하라 (by dolphhong) [2013.07.11]4.A Part 4를 마무리 하며 (by dolphhong) [2013.07.11]4.13 Juxtapostion 배타적인 변환을 동시에 고려하여 Cost가 낮은 것을 선택하라 (by dolphhong) [2013.07.13]실무에서의 Query Transformation 이슈 (by dolphhong) [2013.07.13]2.24 EJE(Enhanced JE) Semi Anti 조인과 ANSI Style로 조인 할 경우도 JE가 가능하다 (by jongmali)