로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

The Logical Optimizer

 [성능향상을 위한 트랜스포머의 SQL 재작성 전략]
   
지은이 오동규   |   출판사 (주)오픈메이드  |   발행일 2010년 04월 05일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 39,000원35,100원 10%
마일리지 5% 1,950원
발행일 2010-04-05
ISBN 8996384003 | 9788996384007
기타정보 국내서 | 432쪽 | 일반
예상출고일
배송비 무료배송
   
데이터베이스관리
종합지수 14p 35 위
   
 

[도서소개]

집필목적

Logical Optimizer는 성능 향상의 목적으로 SQL을 재작성(변경)합니다. 하지만 옵티마이져가 완벽하지 못하므로 많은 경우에 성능저하를 일으키게 됩니다. 옵티마이져가 SQL을 직접 변경 함으로써 SQL의 성능에 미치는 영향은 지대하지만 전세계적으로 이것을 전반적으로 다룬 서적이 없다는 점과 Logical Optimizer의 한계로 인해 발생하는 성능 문제를 해결하기 위해 본서가 출간되었습니다.

아래와 같은 경험이 있는 분들에게 추천 합니다.

-조인 방법과 조인 순서가 올바르지 못하다.
-인덱스를 사용하지 않는다.
-힌트를 사용하였지만 의도대로 되지 않는다.
-실행계획의 모습이 이상하다.
-성능이 저하되는 원인을 찾기 힘들다.
이러한 모든 의문점 뒤엔 Logical Optimizer라는 비밀의 벽이 있습니다. 그 벽을 넘는 순간 위에서 언급된 문제들을 해결할 수 있는 능력을 갖추게 됨은 물론이고 SQL을 보는 눈이 달라질 것입니다. 마치 SF 영화 <매트릭스>의 위대한 예언자인 Oracle의 눈처럼.
(본문 내용 중에서)

본문의 내용을 익히면 다음과 같은 능력을 가지게 될 것입니다.

이 책을 통하여 얻을 수 있는 것

1. 성능향상을 위한 SQL 수정을 튜너가 아닌 옵티마이져에게 시키는 방법
2. 변경된 실행계획을 정확히 읽어내는 능력
3. SQL과 Plan만 보고 옵티마이져가 SQL을 어떻게 변경시켰는지 알 수 있는 능력
4. 튜닝에 실패했던 SQL을 튜닝할 수 있는 능력
궁극적으로는 옵티마이져를 자유자재로 Control 할 수 있는 능력

이 책의 난이도는 중급 및 고급입니다. 따라서 다음과 같은 분들에게 일독을 권합니다.

이 책을 읽어야 할 사람

1. 오라클을 사용하는 DBA, 중급 및 고급 개발자, DBMS의 성능에 관심이 있는 모델러나 설계자, 튜너, DBMS 컨설턴트, Data Architect
2. Oracle 이외의 DBMS를 사용하는 DBA라면 Oracle의 SQL Transformation 기능과 타 DBMS의 SQL Transformation 기능을 비교해볼 수 있는 기회가 될 것입니다.
Episode
Prologue
감사의 글
누구를 위한 책인가
책을 효율적으로 마스터하는 방법
책의 구성

Part 1 - Query Transformation Concept

들어가기
1.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

Part 2 - Heuristic Query Transformation

들어가기
2.A Heuristic 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 Elimination) : 불필요한 Distinct를 제거하라
2.7 CNT(Count(column) To Count(*)):Count(컬럼) 사용시 해당 컬럼이 Not Null인 경우 Count(*)로 대체하라
2.8 FPD (Filter Push Down) : 조건절을 인라인뷰 내부로 이동시켜라
2.9 TP* (Transitive Predicate) : 조인절을 이용하여 다른 테이블에 상수조건을 생성시켜라
2.10 SVM (Simple View Merging) : Simple View를 해체하여 메인 쿼리와 통합하라
2.11 LV*(Lateral 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을 회피하라


Heuristic Query Transformation for Subquery

2.17 SSU(Simple Subquery Unnesting) : 단순 서브쿼리를 조인으로 바꾸어라
2.18 CRSW (Correlated Removal Subquery Using Window Function): 상관 서브쿼리를 사용할 때 분석함수를 사용할 수 있는 경우 서브쿼리를 제거하라
2.19 URSW (Uncorrelated Removal Subquery Using Window Function): 분석함수를 사용할 수 있는 경우 비상관 서브쿼리를 제거하라
2.20 SJ (Semi Join) : 서브쿼리를 Semi 조인으로 변환하라
2.21 AJ (Anti Join) : 부정형 서브쿼리를 Anti 조인으로 바꾸어라
2.22 ANTI NA(Anti Join Null Aware) : Null 허용 컬럼으로 서브쿼리와 조인시 Anti 조인이 가능하다
2.23 OJTAJ*(Outer Join to Anti Join) : Outer 조인을 Anti 조인으로 변환하라
2.24 EJE*(Enhanced JE): Semi / Anti 조인과 ANSI Style로 조인 할 경우도 JE가 가능하다
2.25 JESJ*(Join Elimination Using Self Join): Self Join 사용시에도 JE가 가능하다
2.26 SSTS*(Scalar Subquery To Subquery): 스칼라 서브쿼리를 서브쿼리로 변환하라
2.27 SQC (Subquery Coalescing): 불필요하게 분리되어 있는 서브쿼리를 하나로 통합하라
2.28 DSJ (Driving Semi Join): Semi Join을 Bitmap 인덱스를 이용하여 Driving 테이블로 바꾸어라
2.29 SJR*, AJR*(Hash Join Right Semi/Anti) : Hash Semi/Anti Join 시 사용되는 서브쿼리 집합을 Build Input 집합으로 변환하라


Heuristic Query Transformation for Data Warehouse

2.30 PC* (Pivot Conversion) : Pivot 절을 Case + Group By로 변환하라
2.31 GBEP* (Group By Extension Pruning) : 불필요한 Rollup 이나 CUBE를 삭제하라
2.32 GSTT* (Grouping 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으로 변환하라
2.B Part 2를 마무리 하며

Part 3 - Cost Based Query Transformation

들어가기
3.A Cost Based Query Transformation이란 무엇인가
3.B Search Type과 Iteration이란 무엇인가
3.1 CBPPD*(Cost Based Predicate Push Down) : Complex View에 Filter를 밀어 넣어라
3.2 PPU(Predicate Pull Up) : 비용이 많이 드는 조건절을 뷰 외부로 이동시켜라
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) : 복잡한 서브쿼리를 조인으로 바꾸어라
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을 사용한 뷰에 조인 조건을 침투시켜라
3.14 GBP (Group By Placement) : Group By를 먼저 수행하고 Join 하라
3.15 GBPD (Group By Push Down) : Parallel Query 수행 시 Group by를 한번 더 수행하라
3.16 JF(Join Factorization) : Union / Union All 사용시 공통으로 사용하는 테이블을 분리시켜라
3.17 ST ( Star Transformation ): From 절의 Dimension 테이블을 서브쿼리로 변환하고 DSJ 기능을 이용하여 Bitmap 연산을 수행하라
3.18 CBST (Cost Based Star Transformation): Star Transformation 적용시 Cost Based 환경을 이용하라
3.19 MVR(Materialized View Rewrite): Materialized View를 사용하지 않는 SQL을 Materialized View를 사용하는 SQL로 바꾸어라
3.20 JBE (Join Back Elimination) : Bitmap Join Index를 사용할 경우 필요 없는 테이블 액세스를 제거하라

3.C Part 3을 마무리 하며

Part 4 - Cost Based Query Transformation Internal

들어가기
4.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 메모리 관리
4.12 Interleaving: 선 변환 과정이 끝나면 후 변환 과정을 연이어 수행하라
4.13 Juxtaposition: 배타적인 변환을 동시에 고려하여 Cost가 낮은 것을 선택하라
4.14 실무에 적용하기
4.A Part 4를 마무리 하며

부록과 색인
실무에서의 Query Transformation 이슈
미해결 과제
Epilogue
Bibliography
Index
[저자소개]
오동규
E-mail: odong91@hanafos.com
Blog: Science Of Database(http://scidb.tistory.com)
Blog ID: extremedb

홍익대학교를 졸업하고 오픈메이드 컨설팅의 수석컨설턴트로 재직 중이며 DA(Data Architect)를 맡고 있다. 데이터베이스의 과학과 예술을 널리 전파하는 것을 모토로 삼고 있으며 기업은행, 서울보증보험, 수협, 농협에서 데이터모델링과 DBMS 튜닝 컨설팅 및 교육을 수행하였다. 월간 마이크로 소프트웨어에 DBMS와 관련된 고급원서의 서평을 다수 기고하였다. 저자의 블로그를 방문하면 과학(DBMS)과 예술(데이터 모델링)에 관한 깊이 있는 이야기를 공유할 수 있다.

실행계획인 풀리는 원리에 대해
홍택현님이 쓰신 서평보기 I 평점 I 조회수(1334) I 공감 (2) I 블로그
튜너는 아니지만 그 동안 대용량 데이터 베이스, OWI, Physical Optimaizer, 이펙티브 오라클 등 다양한 책을 보면서 느낀 것은 왜 이러한 실행 계획이 나올 까 하는 것 이었다.  대부분은 실행 계획을 보는 방법과 물리적인 관점이었으나 이책은 왜 그러한 실행 계획이 나오는 지에 대한 근본적인 것을 설명한 것으로 매우 유용한 책이다.  또한, 규칙들 중에는  모델러에게도 매우 유익하다.아쉬운 점은 몇 가지 규칙은  물리 구조를 들어 설명하였으면 하는 점이다...
튜닝에 관심있는분에게는 필독서가 아닌가 싶습니다.
송민주님이 쓰신 서평보기 I 평점 I 조회수(1631) I 공감 (2) I 블로그
튜닝에 관심많은 8년차 개발자 입니다.대용량시리즈부터 해서 국내에 나온 튜닝관련책은 모조리 수집(?)하고 있습니다.ㅎㅎ먼저 책 내용을 대략 정리해보면 optimizer 의 한축을 이루는 logical optimizer 관련부분을상세하게 다른 책입니다.물론 이전의 튜닝책에서두 logical optimizer 부분을 기술한 책은 있었으나이처럼 detail하고 전문적으로 다른책은 최초로 보입니다.일단 책을 한번 읽고 느낀점은 이 책을 읽고나서의 튜닝에 대한 관점이 이전과는 변화가생긴거 같습니다.사실...
최초? 새로운 패러다임?
김우경님이 쓰신 서평보기 I 평점 I 조회수(1555) I 공감 (5) I 블로그
바로 아래 서평을 쓰신 분 의견("logical optimizer를 전반적으로 다루는 전세계에서 유일한 책이라고 했는데 좀 의아합니다. 만약 그게 사실이라면 ~~~")에 공감합니다."최초의 책", "새로운 패러다임"이라고 홍보하지만, 사실 Logical Optimizer는 "Query Transformation"이란 주제로 많이 알려진 기능입니다. 최근에 유명세를 탄 튜닝 서적들은 모두 다루고 있죠. 오라클이 공개한 백서를 기준으로 보면, 이미 7~8년 전에 소개된 개념이구요. 다만, 기존 책들에 비해 11g 신기능을 ...
오라클 옵티마이져의 진화
박영란님이 쓰신 서평보기 I 평점 I 조회수(2596) I 공감 (4) I 블로그
우연히 인터넷에서 이책에 관한 정보를 보고 책을 구입 하였습니다. 아래는 dev4u님이 작성한 서평입니다. "The logical optimizer책을 구입해서 1/3쯤 보구 있는데요. 기대 이상입니다.저자의 블러그에 좋은 글이 많이 있던데 책의 질이 차원이 틀리더군요.아직까지 회사에서 oracle 8i를 사용해서 책의 내용(10g,11)을 바로 써먹을 일이없지만 미래를 위해 열심히 공부를 하고 있습니다.저자의 오라클에 대한 자부심과 열정을 여실히 엿볼 수 있는 훌륭한 책이라고 생각합니...
장인 정신이 보이는 책.. 강추
김기창님이 쓰신 서평보기 I 평점 I 조회수(1463) I 공감 (2) I 블로그
한마디로 프로페셔널한 장인 정신이 보이는 책입이다..무엇보다 옵티마이저에 대해 근본적인 이해를 할 수 있습니다.조인과 인덱스 등 기초적인 내용도 상세하게 다루기 때문에 튜너 뿐만 아닐 개발자에게도 도움이 될 것 같습니다.소장하고 있으면서 필요시 참조하기도 좋을 책으로 강추합니다..
 
전체평균(104)
회원평점   회원서평수 5
실행계획인 풀리는 원리에 대해
홍택현 님  2010-05-26
튜닝에 관심있는분에게는 필독서가 아닌가 싶습니다.
송민주 님  2010-05-20
최초? 새로운 패러다임?
김우경 님  2010-05-16
오라클 옵티마이져의 진화
박영란 님  2010-05-15
장인 정신이 보이는 책.. 강추
김기창 님  2010-04-21
(주)오픈메이드 출판사의 신간
ORACLE SQL실전튜닝기본해법

30,400원
(5%↓+1%)
 
이메일주소수집거부