HOME > Detail View

Detail View

오라클 튜닝 에센셜 : DBMS_XPLAN우로 SQL 실행계획 뽀개기 (Loan 3 times)

Material type
단행본
Personal Author
박찬권 서윤식, 감수
Title Statement
오라클 튜닝 에센셜 = Oracle tuning essential : DBMS_XPLAN우로 SQL 실행계획 뽀개기 / 박찬권 지음
Publication, Distribution, etc
서울 :   글봄Creative,   2020  
Physical Medium
236 p. : 삽화 ; 27 cm
ISBN
9791196707125
General Note
감수: 서윤식  
색인수록  
000 00000nam c2200205 c 4500
001 000046011416
005 20200107100435
007 ta
008 200106s2020 ulka 001c kor
020 ▼a 9791196707125 ▼g 93560
040 ▼a 211009 ▼c 211009 ▼d 211009
082 0 4 ▼a 005.7565 ▼2 23
085 ▼a 005.7565 ▼2 DDCK
090 ▼a 005.7565 ▼b 2020
100 1 ▼a 박찬권
245 1 0 ▼a 오라클 튜닝 에센셜 = ▼x Oracle tuning essential : ▼b DBMS_XPLAN우로 SQL 실행계획 뽀개기 / ▼d 박찬권 지음
260 ▼a 서울 : ▼b 글봄Creative, ▼c 2020
300 ▼a 236 p. : ▼b 삽화 ; ▼c 27 cm
500 ▼a 감수: 서윤식
500 ▼a 색인수록
700 1 ▼a 서윤식, ▼e 감수
945 ▼a KLPA

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.7565 2020 Accession No. 111821321 Availability In loan Due Date 2020-04-29 Make a Reservation Available for Reserve R Service M
No. 2 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.7565 2020 Accession No. 121255464 Availability Available Due Date Make a Reservation Service B M
No. 3 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.7565 2020 Accession No. 151349207 Availability Available Due Date Make a Reservation Service
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.7565 2020 Accession No. 111821321 Availability In loan Due Date 2020-04-29 Make a Reservation Available for Reserve R Service M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.7565 2020 Accession No. 121255464 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.7565 2020 Accession No. 151349207 Availability Available Due Date Make a Reservation Service

Contents information

Book Introduction

튜닝 경험이 없다면 시스템 속도를 저하시키는 '문제의 SQL문'을 접하더라도 실감하기가 쉽지 않다. 이런 독자를 위해 『오라클 튜닝 에센셜』은 직접 확인해볼 수 있도록 5000만 건 이상의 주문 테이블과 주문상품 테이블 데이터, 관련 데이터 모델을 제공한다. 책에 제시된 SQL문을 직접 적용·확인해 보고, 나만의 방법으로 고쳐보면서 공부할 수 있다.

DB 튜닝의 이해를 넘어 체화를 위한 공격적인 시도

DB 튜닝을 이해하여 좋은 SQL을 짜고 싶은 개발자들을 위한 책이다. DB 튜닝 입문자를 위해 꼭 필요한 내용 위주로 간추려 그림으로 설명함으로써 공부 부담을 줄였다.

튜닝은 DBMS의 아키텍처 이해 등 방대한 학습이 필요한 영역이다. 하지만 대부분의 개발 프로젝트 현장에는 전담 DB 튜너가 없다. 이에 따라 개발자들이 경험을 토대로 튜닝을 한다. 이 책은 경험 단계를 뛰어넘어 튜닝을 제대로 이해하고 싶은 개발자를 위해 기획됐다.

이 책은 튜닝이라는 허들을 넘기 어려운 이유 세 가지를 염두에 두고 해결책 중심으로 구성됐다.

DB 튜닝 공부의 어려움 3가지와 해결책

① 알아야 할 내용이 많다 ▶ 필수 내용만 간추려 그림과 함께 설명
② 느린 SQL 문을 접하기 어렵다 ▶ 풍부한 실행계획 예제 제시
③ 실습 데이터 확보의 어려움 ▶ 5000만 건 이상의 실습용 데이터와 모델 제공

튜닝 경험이 없다면 시스템 속도를 저하시키는 '문제의 SQL문'을 접하더라도 실감하기가 쉽지 않다. 이런 독자를 위해 『오라클 튜닝 에센셜』은 직접 확인해볼 수 있도록 5000만 건 이상의 주문 테이블과 주문상품 테이블 데이터, 관련 데이터 모델을 제공한다. 책에 제시된 SQL문을 직접 적용·확인해 보고, 나만의 방법으로 고쳐보면서 공부할 수 있다.

더 이상 미룰 수 없다, 이제 버텨야 할 시간

DB 튜닝 전문서는 많다. 그럼에도 튜닝 공부를 하는 사람들은 알아야 할 내용이 너무 많고 어렵다고 한다. 막연히 어렵다는 생각과 중도에 포기할지 모른다는 두려움에 시작도 못하는 이들도 있다. SQL 튜닝에 대해 두려움을 가진 사람이나 도전했다가 포기했던 사람을 위한 책은 없을까?

『오라클 튜닝 에센셜』은 이 지점에 주목했다. 많은 것을 알려주기보다 독자가 끝까지 버틸 수 있는 현실적인 방법 중심으로 풀어나간다. 튜닝 학습자가 만나게 될 세 가지 장애물은 다음과 같다. △튜닝을 하기 위해 알아야 하는 내용이 많다. △느린 SQL문이 어떤 문제를 야기하는지 실감하기 어렵다. △충분한 양의 데이터를 확보하기 어렵다.

이 책이 제시하는 장애물 통과 방법은 직접적이고 공격적이다.

▲ 내용을 줄이고 그림으로 설명
튜닝을 이해하는 데 필수적인 내용만 명쾌하게 소개하고, 글만으로 설명하기에 어려운 부분은 그림으로 풀어냈다.

▲ 풍부한 실행계획 예제와 실습환경 제시
경험 많은 튜너는 SQL문에 제시된 수치만으로 성능 변화를 예측할 수 있다. 하지만 튜닝 입문자는 수치만으로 변화를 실감하기 어렵다. 대용량 테이블에서 인덱스 없이 SQL을 실행했을 때 얼마나 느린지, 인덱스를 만들어 적용했을 때 얼마나 빨라졌는지는 직접 테스트해 봐야 실감할 수 있다. 숫자로 느끼는 30초와 실제 실행한 후 기다리는 30초의 느낌을 비교해 보고, 독자 스스로 튜닝에 도전하도록 한다. 이를 위해 풍부한 실행계획 예제를 제시한다. SQL문이 생각보다 느리다면, 직접 진단하여 튜닝해 볼 수 있다. 원하는 속도로 끌어올렸다면, 기존 실행계획을 분석해 새로운 실행계획으로 바꾸는 연습까지도 할 수 있다.

▲ 5000만 건 이상의 데이터로 직접 확인
예제를 직접 확인해볼 수 있도록 1500만 건의 주문 테이블과 3500만 건 이상의 주문상품 테이블을 제공한다. 이 환경에서 제시된 SQL문뿐 아니라 독자만의 SQL문을 적용해보고 어떤 변화가 있는지 확인할 수 있다. 특히 책 전반에 걸쳐 패스트푸드 전문점의 주문과 관련된 하나의 데이터 모델로 설명하기 때문에 공부의 몰입도도 높일 수 있다.

SQL문 한두 개를 튜닝하기 위해 튜너를 찾는 경우는 매우 드물다. 이때는 개발자나 DBA가 튜닝 업무를 맡게 된다. 이 책은 튜너가 아닌 다른 직종에 있으면서 튜닝을 접해야 하는 담당에게 최고의 선택이 될 것이다.

"이 책은 SQL 튜닝에 대해 막연한 두려움을 가진 사람이나 도전했다가 실패했던 사람에게 할 수 있다는 희망의 불씨가 될 것입니다."
― 서윤식 데이터와사람들 대표

"굉장히 공격적인 책입니다. 이 책은 제가 그동안 읽었던 튜닝 책들 가운데 가장 강력한 주인공이 될 것입니다. 언젠가는 나올 거라 기대했던 내용의 책을 만난 놀라움과 반가움이 교차했습니다."
― 양용성 SQLGATE개발팀장·체커 개발이사

희망의 불씨
서윤식(데이터와사람들 대표 서윤식)
초등학생 때, 고우영 「만화 삼국지」를 신문에서 처음 접했다. 멋진 그림과 함께 매일 조금씩 연재됐는데, 다음 내용이 너무나 궁금해서 날마다 신문 도착시간을 기다리곤 했다. 그때 집에는 5권짜리 『삼국지』가 있었다. 그림 하나 없이 작은 글씨에 세로쓰기로 조판된 책이었다. 중학교에 들어간 다음에 그 책을 읽었다. 처음에는 낯설었으나, 만화를 보고 줄거리를 알고 있었기에 금방 적응했다.

『오라클 튜닝 에센셜』이 나온다고 하여 내심 '베개 책(?)'이 아닐까 하고 예상했다. SQL 튜닝에 익숙하지 않은 독자를 위한 책이라니, 이것저것 소개하다 보면 쪽 수가 늘어날 수 있기 때문이다. 하지만 책을 받아보았을 때, 내 예상은 여지없이 깨지고 말았다. 얇았다. 그럼에도 목차를 보니 담을 건 다 담고 있었고, 빨리 읽어보고 싶어졌다. 오라클 아키텍처의 원리, 인덱스, 조인, 소트튜닝, 파티션, 병렬의 원리 등 SQL 튜닝을 위해 알아야 할 내용을 추리고 추려 놓았다. 제목에 왜 '에센셜'이라는 단어를 붙였는지도 알 수 있었다.

이 책은 긴 설명 없이 어려운 내용을 쉽게 접근할 수 있음을 직접 보여준 책이다. 한마디로 단순 명쾌하다. 그 비결이 무엇일까? 곳곳에 들어간 그림에서 바로 답을 찾을 수 있었다. 글만으로 설명하기에 어려운 부분을 그림으로 풀어냄으로써 쉽고 간결함을 동시에 달성했다. 마치 오라클 내부에서 실행되는 것을 애니메이션처럼 만들었구나 하는 느낌마저 든다.

더 놀란 것은 실습 데이터 모델을 제공한다는 점이었다. 주문과 관련된 하나의 데이터 모델이 책 전반의 실습 내용으로 일관되게 활용되고 있다. 독자가 편안히 읽어 나갈 수 있도록 배려한 것이다. 필자에게 그 과정은 꽤나 힘든 작업이었을 것이다.

SQL 튜닝을 공부하고자 하는 사람들이 주변에 적지 않다. 하지만 막연히 어렵다고만 생각하는 경우도 많았다. 중도에 포기할지 모른다는 두려움에 시작도 못하는 이들도 있다. 이 책은 SQL 튜닝에 대해 막연한 두려움을 가진 사람이나 도전했다가 실패했던 사람에게 할 수 있다는 희망의 불씨가 될 것이라고 믿는다. 데이터 업계에 종사하는 사람으로서 좋은 튜닝 입문서를 세상에 내놓은 박찬권 저자에게 감사의 마음을 전한다.


Information Provided By: : Aladin

Table of Contents

들어가는 글
이 책의 활용법

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 조인

나가는 글
감수의 글
추천의 글

New Arrivals Books in Related Fields

Ramamurthy, Bina (2021)
윤관식 (2020)