이미 소장하고 있다면 판매해 보세요.
|
들어가는 글
이 책의 활용법 1장 실습 환경_ 1.1. 생성 스크립트 1.2. 실습 데이터 모델 1.3. DBMS_XPLAN.DISPLAY_CURSOR 2장 오라클 아키텍처_ 2.1. 근력 운동과 오라클 아키텍처가 닮은 점 2.2. 개요 2.3. 시작하기 2.4. 리두 로그 버퍼와 LGWR 2.5. DB 버퍼 캐시와 DBWR 2.6. Shared pool과 SQL 실행과정 2.6.1. 구문분석 2.6.2. 값 치환 2.6.3. 실행 2.6.4. 데이터 인출 2.7. SELECT 문장의 논리적 실행 순서 2.8. 데이터 저장 구조 2.8.1. 테이블스페이스 2.8.2. 세그먼트 2.8.3. 익스텐트 2.8.4. 블록 2.8.5. 정리 3장. I/O 효율화_ 3.1. 인덱스 탐색 원리 3.2. 블록 단위 I/O 3.3. 시퀀스 액세스와 랜덤 액세스의 이해 3.4. 버퍼 피닝 3.5. 싱글 블록 I/O vs. 멀티 블록 I/O 3.6. I/O 효율화, 왜 중요한가? 4장 인덱스 기본 개념_ 4.1. 인덱스의 특징 4.2. 오라클에서만 사용 가능한 ROWID 4.3. 인덱스 스캔 방식 4.3.1. Index Unique Scan 4.3.2. Index Range Scan 4.3.3. Index Full Scan 4.3.4. Index Skip Scan 4.3.5. 인덱스 스캔 유도 방법 4.3.6. Index Fast Full Scan 4.3.7. 기타 활용 4.4. 인덱스 스캔 동작 원리 4.4.1. 인덱스 컬럼 사용법 4.4.2. 묵시적 형변환 5장 인덱스 활용과 튜닝_ 5.1. 인덱스로 테이블 액세스 최적화 5.1.1. 인덱스로 테이블 랜덤 액세스 5.1.2. 인덱스 손익 분기점 5.2. 인덱스 튜닝 사례 5.2.1. 인덱스 스캔에서 비효율 판단하기 5.2.2. 기존 인덱스에 컬럼 추가하기 5.2.3. PK 인덱스 확장하기 5.2.4. 인덱스에서만 처리하기 5.3. 인덱스 스캔 범위 계산 5.3.1. 조건절에 따른 인덱스 스캔 범위 파악 5.4. 인덱스 설계 5.4.1. 인덱스 설계 기준 및 전략 6장 조인_ 6.1. NL 조인 6.2. 소트 머지 조인 6.3. 해시 조인 6.4. 조인 방식별 특성 비교 6.5. 조인 방식에 따라 달라지는 인덱스 설계 6.5.1. NL 조인 6.5.2. 소트 머지 조인 6.5.3. 해시 조인 6.6. Outer 조인 6.6.1. Outer NL 조인 6.6.2. Outer 소트 머지 조인 6.6.3. Outer 해시 조인 6.7. 스칼라 서브 쿼리로의 조인 7장 소트 튜닝_ 7.1. 소트 연산의 종류 7.1.1. Order by(Sort Order by) 7.1.2. Group by(Sort Group by, Hash Group by) 7.1.3. Distinct, IN, UNION, MINUS, INTERSECT 등의 집합 연산자 7.1.4. Rank(), Dense_Rank(), Row_Number() 등 윈도우 함수(Window Sort) 7.1.5. Sort Aggregate 연산 7.2. 인덱스를 이용한 소트 대체 7.2.1. Sort Order by 7.2.2. Sort Group by 7.3. 불필요한 소트 제거 7.3.1. UNION, MINUS, INTERSECT 등 집합 연산자 7.3.2. IN절 안의 서브 쿼리 7.4. 피할 수 없는 소트! 소트 영역이라도 적게 사용하기 7.4.1. 소트 영역에 대한 이해 7.4.2. 첫 페이지를 빠르게 동작 시키는 페이징 기법 8장 파티셔닝_ 8.1. 테이블 파티셔닝 8.1.1. Range 파티션 8.1.2. 리스트 파티션 8.1.3. 해시 파티션 8.1.4. 세 가지 파티션의 특징 8.1.5. 복합 파티셔닝 8.2. 인덱스 파티셔닝 8.3. 파티션 Pruning 9장 병렬처리_ 9.1. 병렬도 9.2. 데이터 재분배 9.3. 인덱스 스캔 vs 테이블 풀 스캔 vs 병렬 수행 9.4. 병렬 해시 조인과 파티션 와이즈 조인 9.5. 병렬 NL 조인 나가는 글 감수의 글 추천의 글 |
박찬권의 다른 상품
|
DB 튜닝 공부의 어려움 3가지와 해결책
① 알아야 할 내용이 많다 ▶ 필수 내용만 간추려 그림과 함께 설명 ② 느린 SQL 문을 접하기 어렵다 ▶ 풍부한 실행계획 예제 제시 ③ 실습 데이터 확보의 어려움 ▶ 5000만 건 이상의 실습용 데이터와 모델 제공 더 이상 미룰 수 없다, 이제 버텨야 할 시간 DB 튜닝 전문서는 많다. 그럼에도 튜닝 공부를 하는 사람들은 알아야 할 내용이 너무 많고 어렵다고 한다. 막연히 어렵다는 생각과 중도에 포기할지 모른다는 두려움에 시작도 못하는 이들도 있다. SQL 튜닝에 대해 두려움을 가진 사람이나 도전했다가 포기했던 사람을 위한 책은 없을까? 『오라클 튜닝 에센셜』은 이 지점에 주목했다. 많은 것을 알려주기보다 독자가 끝까지 버틸 수 있는 현실적인 방법 중심으로 풀어나간다. 튜닝 학습자가 만나게 될 세 가지 장애물은 다음과 같다. △튜닝을 하기 위해 알아야 하는 내용이 많다. △느린 SQL문이 어떤 문제를 야기하는지 실감하기 어렵다. △충분한 양의 데이터를 확보하기 어렵다. 이 책이 제시하는 장애물 통과 방법은 직접적이고 공격적이다. ▲ 내용을 줄이고 그림으로 설명 튜닝을 이해하는 데 필수적인 내용만 명쾌하게 소개하고, 글만으로 설명하기에 어려운 부분은 그림으로 풀어냈다. ▲ 풍부한 실행계획 예제와 실습환경 제시 경험 많은 튜너는 SQL문에 제시된 수치만으로 성능 변화를 예측할 수 있다. 하지만 튜닝 입문자는 수치만으로 변화를 실감하기 어렵다. 대용량 테이블에서 인덱스 없이 SQL을 실행했을 때 얼마나 느린지, 인덱스를 만들어 적용했을 때 얼마나 빨라졌는지는 직접 테스트해 봐야 실감할 수 있다. 숫자로 느끼는 30초와 실제 실행한 후 기다리는 30초의 느낌을 비교해 보고, 독자 스스로 튜닝에 도전하도록 한다. 이를 위해 풍부한 실행계획 예제를 제시한다. SQL문이 생각보다 느리다면, 직접 진단하여 튜닝해 볼 수 있다. 원하는 속도로 끌어올렸다면, 기존 실행계획을 분석해 새로운 실행계획으로 바꾸는 연습까지도 할 수 있다. ▲ 5000만 건 이상의 데이터로 직접 확인 예제를 직접 확인해볼 수 있도록 1500만 건의 주문 테이블과 3500만 건 이상의 주문상품 테이블을 제공한다. 이 환경에서 제시된 SQL문뿐 아니라 독자만의 SQL문을 적용해보고 어떤 변화가 있는지 확인할 수 있다. 특히 책 전반에 걸쳐 패스트푸드 전문점의 주문과 관련된 하나의 데이터 모델로 설명하기 때문에 공부의 몰입도도 높일 수 있다. SQL문 한두 개를 튜닝하기 위해 튜너를 찾는 경우는 매우 드물다. 이때는 개발자나 DBA가 튜닝 업무를 맡게 된다. 이 책은 튜너가 아닌 다른 직종에 있으면서 튜닝을 접해야 하는 담당에게 최고의 선택이 될 것이다. [저자의 글] 끝까지 완주하도록 엮었습니다 개념을 충실하게 담은 얇은 책을 쓰고 싶었습니다. 처음부터 너무 어렵거나 두꺼워서 끝까지 읽기 어려운 책보다는 기본을 익힐 수 있는 책을 내놓고 싶었습니다. 부담 없이 읽을 수 있는 책을 목표로 썼으므로 이 책은 튜닝을 처음 접하는 분이라도 빠르게 읽을 수 있습니다. 튜닝을 공부하기 좋은 책은 시중에 이미 많이 나와 있습니다. 그렇지만 처음 시작할 때 너무 어렵고 분량이 많아 공부에 어려움을 호소하는 분들을 많이 보았습니다. 튜닝은 개발자나 DBA처럼 경력 초반에 바로 실무에 진입하기 어려운 직종입니다. SQL이나 DBMS를 다루는 직종에 종사하면서 튜닝을 조금씩 경험해 보다가 튜너가 되는 케이스가 가장 많습니다. SQL문 한두 개를 튜닝하기 위해 튜너를 찾는 경우는 매우 드문 일입니다. 이런 경우 개발자나 DBA가 튜닝 업무를 맡게 됩니다. 이 책은 튜너가 아닌 다른 직종에 있으면서 튜닝을 접해야 하는 분에게 권하고 싶습니다. 튜너가 되기 전에 튜닝 감각을 익힐 수 있도록 눈높이를 맞춰 보았습니다. (중략) 튜닝이라는 주제는 어렵습니다. 첫째, 튜닝을 하기 위해 알아야 하는 내용이 만만치 않습니다. 인덱스, 조인 방식, 소트 등 튜닝을 위한 지식과 병목 현상을 판단하기 위해 해독해야 하는 실행계획에 이르기까지 공부해야 할 주제가 한둘이 아닙니다. 하지만 현실은 튜닝 이전에 SQL을 능숙하게 다루는 것도 그리 간단한 문제가 아닙니다. 둘째, 느린 SQL 문을 접하기 어렵습니다. 이 버거운 주제를 버티는 분이라 하더라도 공부하면서 만나는 예제를 직접 실습해 보면 별로 느리지 않습니다. 가끔은 ‘이렇게 빠른 SQL을 왜 튜닝하지?’라는 의문이 생기게 됩니다. 셋째, 충분한 양의 데이터를 확보하기 어렵습니다. 대용량 테이블에서 인덱스 없이 SQL을 실행했을 때 얼마나 느린지 인덱스를 만들고 나서 얼만큼 빨라졌는지 체험해 보기 힘듭니다. 숫자로 느끼는 30초와 실제 실행을 해 보고 기다리는 30초의 느낌은 다를 것입니다. 반복해서 실행해야 하는 경우라면 30초가 얼마나 지루한지 느껴본 사람만 알 것입니다. 많은 분들이 튜닝을 공부하기 어려운 점으로 뽑은 세 가지를 정리하여 책으로 엮어 보았습니다. 우선 버틸 수 있도록 양을 줄였습니다. 이 책은 독자 여러분에게 많은 것을 알려주기 위한 책이 아닙니다. 조금은 덜 중요한 것들을 빼는 작업이 더 어려웠습니다. 두꺼운 책을 버티는 분들이 그 다음으로 힘들어 하는 내용은 책을 통해 느린 SQL문을 접하기 어려운 점입니다. 튜너에게는 실행계획에서 제공하는 수치만으로 성능이 개선됐는지를 파악하는 게 어렵지 않습니다. 하지만 튜닝 입문자에게는 수치 감소만으로 성능 개선을 파악하는 게 쉽지 않습니다. 이 책에서는 실습을 할 수 있도록 충분한 양의 데이터를 제공합니다. 실습하기 위한 스크립트를 실행하면 1500만 건의 주문 테이블과 3500~3800만 건의 주문상품 테이블을 만나볼 수 있게 됩니다. 현장에서 SQL문을 접하기 어려운 경우에도 누구나 쉽게 SQL문을 실습할 수 있도록 데이터를 구축하였습니다. 책에서 제공하는 실습 환경을 바탕으로, 이 책의 주제는 아니지만 다양한 SQL 구문 또한 활용할 수 있을 것이라고 자부합니다. (중략) 자 이제 버티러 갈 시간입니다. 지금부터는 여러분의 차례입니다. 더 나은 사람(?)이 되는 그날까지 버티길 간절히 바랍니다. 저도 응원하겠습니다. [감수의 글] 희망의 불씨 서윤식(데이터와사람들 대표 서윤식) 초등학생 때, 고우영 「만화 삼국지」를 신문에서 처음 접했다. 멋진 그림과 함께 매일 조금씩 연재됐는데, 다음 내용이 너무나 궁금해서 날마다 신문 도착시간을 기다리곤 했다. 그때 집에는 5권짜리 『삼국지』가 있었다. 그림 하나 없이 작은 글씨에 세로쓰기로 조판된 책이었다. 중학교에 들어간 다음에 그 책을 읽었다. 처음에는 낯설었으나, 만화를 보고 줄거리를 알고 있었기에 금방 적응했다. 『오라클 튜닝 에센셜』이 나온다고 하여 내심 ‘베개 책(?)’이 아닐까 하고 예상했다. SQL 튜닝에 익숙하지 않은 독자를 위한 책이라니, 이것저것 소개하다 보면 쪽 수가 늘어날 수 있기 때문이다. 하지만 책을 받아보았을 때, 내 예상은 여지없이 깨지고 말았다. 얇았다. 그럼에도 목차를 보니 담을 건 다 담고 있었고, 빨리 읽어보고 싶어졌다. 오라클 아키텍처의 원리, 인덱스, 조인, 소트튜닝, 파티션, 병렬의 원리 등 SQL 튜닝을 위해 알아야 할 내용을 추리고 추려 놓았다. 제목에 왜 ‘에센셜’이라는 단어를 붙였는지도 알 수 있었다. 이 책은 긴 설명 없이 어려운 내용을 쉽게 접근할 수 있음을 직접 보여준 책이다. 한마디로 단순 명쾌하다. 그 비결이 무엇일까? 곳곳에 들어간 그림에서 바로 답을 찾을 수 있었다. 글만으로 설명하기에 어려운 부분을 그림으로 풀어냄으로써 쉽고 간결함을 동시에 달성했다. 마치 오라클 내부에서 실행되는 것을 애니메이션처럼 만들었구나 하는 느낌마저 든다. 더 놀란 것은 실습 데이터 모델을 제공한다는 점이었다. 주문과 관련된 하나의 데이터 모델이 책 전반의 실습 내용으로 일관되게 활용되고 있다. 독자가 편안히 읽어 나갈 수 있도록 배려한 것이다. 필자에게 그 과정은 꽤나 힘든 작업이었을 것이다. SQL 튜닝을 공부하고자 하는 사람들이 주변에 적지 않다. 하지만 막연히 어렵다고만 생각하는 경우도 많았다. 중도에 포기할지 모른다는 두려움에 시작도 못하는 이들도 있다. 이 책은 SQL 튜닝에 대해 막연한 두려움을 가진 사람이나 도전했다가 실패했던 사람에게 할 수 있다는 희망의 불씨가 될 것이라고 믿는다. 데이터 업계에 종사하는 사람으로서 좋은 튜닝 입문서를 세상에 내놓은 박찬권 저자에게 감사의 마음을 전한다. |
|
저자가 누군지도 모르는 상태에서 추천사를 부탁받고 아직 온기가 남아 있는 책을 읽어 갔습니다. ‘들어가는 글’을 보면서 저자가 이 책에 무엇을 담으려고 했는지 단번에 느낄 수 있었습니다. 다 읽고 나서 ‘같은 일을 하는 개발자로서, 그리고 DBA로서 협업에서 부딪히는 답답한 문제를 해결하고, 그 해결 방법에 대해 함께 고민하고 싶다’는 개발자 마인드를 느꼈습니다. 언젠가는 나올 거라고 생각했던 책을 예상보다 빨리 만난 놀라움과 반가움이 교차했고요.
굉장히 공격적인 책입니다. 저는 DB 툴을 만들고 있기 때문에 DB와 관련된 책을 꽤 많이 읽고 저자들을 만나기도 합니다. 이 책은 제가 그동안 읽었던 튜닝 서적들 가운데 가장 강력한 책이 될 것입니다. 샘플에 대한 갈증을 해결하고 실전을 통해 성장할 수 있는 쉽지 않은 기회를 제시하는 책이기 때문입니다. 이 책을 구입한 분들은 샘플 스크립트로 모든 샘플 스크립트를 직접 실행해 볼 것을 권합니다. 그냥 읽고 이해하는 책이 아님을 저는 강조하고 싶습니다. 3700만 건의 데이터를 통해서 튜닝이 무엇인지 직간접적으로 이해할 수 있고, 저자의 의도를 파악하게 될 것이라 생각합니다. 많은 튜닝 책에서 실행계획, 트레이스, tkprof를 통한 튜닝을 이야기합니다. 하지만 현실은 많이 다릅니다. 개발자가 DB를 통해 할 수 있는 것은 SQL을 통한 튜닝이 거의 전부인 상황입니다. 이 책에서 가장 놀라웠던 점은 DBMS_XPLAN을 심도 있게 다뤘다는 것입니다. 이제 DBMS_XPLAN은 모든 개발자가 활용할 수 있는 무기가 될 것이라 확신합니다. 여러분도 이 책을 통해 저처럼 DB의 재미를 느껴 보시기를 바랍니다. - 양용성 (SQLGate 개발팀장·체커 개발이사) |