책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 데이터베이스 프로그래밍 > SQL
· ISBN : 9788996384069
· 쪽수 : 872쪽
· 출판일 : 2025-07-15
책 소개
현대의 데이터 환경에서는 속도와 효율성이 비즈니스 성과를 결정하는 중요한 요소입니다. 대용량 데이터를 다루는 애플리케이션이 늘어나고, 데이터 웨어하우스 및 클라우드 환경이 확대되면서 SQL 튜닝은 단순한 성능 최적화가 아니라 비즈니스의 경쟁력을 좌우하는 핵심 기술이 되었습니다.
약 10년 전에 “Oracle 실전 튜닝 기본 해법”이라는 책을 쓴 이후 오래간만에 다시 SQL 튜닝 책을 쓰게 되었습니다. “Oracle 실전 튜닝 기본 해법”은 총 12단원으로 구성을 했었습니다. 이번 책은 총 19단원으로 확장했으며 최근 가장 많이 쓰이고 있는 버전인 19c를 기준으로 작성했습니다.
SQL 개발을 몇 년씩 해왔더라도 SQL 튜닝이라는 주제 자체가 접근하기에는 쉽지 않은 것은 사실입니다. 실무에서 튜닝한 결과를 이용해서 개발팀 대상으로 SQL 튜닝 교육과 튜닝 사례 교육도 진행하면서 어떤 목차로 어떤 주제로 정리를 해야 접근하기가 쉬울지 생각을 많이 했습니다. SQL 초보자가 튜닝에 접근하기는 쉽지 않겠지만 SQL 스터디 및 개발 업무를 2~3년 이상 해온 사람이라면 이 책을 통해 어렵지 않게 접근할 수 있을 것이라 생각합니다.
AI 시대에도 튜닝 전문가의 역할은 중요하다
AI가 자동으로 실행계획을 분석하거나 튜닝을 시도해서 튜닝 결과를 추천할 수 있지만 모든 상황을 정확히 해석하진 못합니다. 복잡한 비즈니스 로직이나 데이터 모델은 전문가의 경험과 해석이 필수입니다. AI 기반 튜닝 도구(예 : Oracle SQL Tuning Advisor)는 성능을 개선하기도 하지만, 잘못 적용하면 성능이 악화될 가능성도 있기 때문에 전문가의 사전 검토와 사후 검증이 필요합니다. 복잡한 JOIN 및 분석 함수 등이 포함된 SQL은 자동 튜닝이 어려우며 고난이도 SQL은 여전히 전문가가 직접 다뤄야 합니다.
요약하자면 AI는 튜닝 전문가의 도구이지 대체자가 아니며 AI의 추천을 해석하고 책임질 사람은 여전히 튜닝 전문가입니다.
개발자와 튜닝 전문가는 AI가 추천한 튜닝 기법을 검증하고, 비즈니스 로직에 맞는 최적의 SQL을 설계해야 합니다. AI는 SQL 튜닝을 자동화할 수 있어도, 데이터 파티셔닝, INDEX 설계, OLTP 및 OLAP 환경별 최적화 전략을 자동으로 결정할 수 없습니다. AI 시대에도 튜닝 전문가가 데이터 모델을 이해하고, 최적의 SQL을 설계하는 역량이 필요합니다. SQL 튜닝의 원리를 이해하고, 자동화 도구와 협업하는 전문가로 성장해야 합니다.
이 책의 구성 및 특징
이 책은 Oracle 19c를 기준으로 SQL 성능 최적화에 필수적인 개념과 실전 튜닝 기법을 다룹니다.
수많은 SQL을 튜닝하다 보면 가장 많이 발생하는 성능 저하의 80%는 패턴이 한정되어 있습니다. 이 책은 실무에서 가장 많이 발생하는 성능 저하 패턴을 80% 해결하는 방법을 중심으로 정리하면서, 동시에 고급 튜닝 기법도 함께 소개하고 있습니다.
● SQL 튜닝의 기본 원리
Oracle 기본 아키텍처 (1장)
SQL 성능 최적화를 위한 원리 및 튜닝 도구 (2~3장)
SQL이 실행되는 방식과 성능 저하의 주요 원인을 파악하는 것이 튜닝의 첫걸음입니다. 이 장에서는 SQL 성능 최적화를 위한 기본 원리를 살펴보고 실행 계획을 분석하고 성능을 측정하는 다양한 튜닝 도구(DBMS_XPLAN_DISPLAY_CURSOR, SQL 모니터링 Report 등)를 다룹니다.
● SQL 실행 최적화 전략
INDEX (4~5장)
JOIN (6장)
서브쿼리 및 실행 계획 분리 (7~9장)
SQL 튜닝에서 가장 중요한 요소 중 하나는 INDEX 활용 방식입니다. INDEX를 어떻게 설계하고, JOIN 방식을 최적화하는지에 따라 성능 차이가 크며, 이를 최적화하는 전략을 다룹니다. 또한, 서브쿼리, 실행 계획 분리, 페이징 처리 최적화 기법을 상세히 설명하여 SQL 성능을 개선하는 방법을 제공합니다.
● 기타 SQL 튜닝 기법
PGA 튜닝 및 실행 계획 분석 (10~11장)
데이터 반복 ACCESS 최적화 (12장)
기타 응용 튜닝 및 옵티마이저 이해 (13~14장)
SQL 실행 중 불필요한 메모리 사용을 줄이고, 동일 데이터 반복 접근을 최소화하는 전략을 소개합니다. 그리고 옵티마이저의 기본적인 원리와 응용 튜닝에 대한 부분도 함께 다룹니다.
●대용량 데이터 환경에서의 튜닝 및 실무 사례
Oracle 트랜잭션 및 Redo Log 튜닝 (15장)
파티셔닝 및 Exadata Basic (16~17장)
Oracle 성능 분석 및 실무 사례 (18~19장)
대용량 데이터 환경에서 파티셔닝은 필수적입니다. 그리고 대용량 데이터 환경에서 엑사데이터 활용이 증가하고 있습니다. 이와 관련해서 파티셔닝과 Oracle Exadata 활용에 대한 부분을 다루었습니다.
그리고 SQL 튜닝 전문가는 SQL 튜닝 업무만 담당하지 않습니다. Database에 성능 문제가 발생하면 Database 전반에 걸친 성능 문제의 원인을 파악하고 분석하는 역할을 수행합니다. 이에 따라서 Oracle 성능 분석 기본 방법론에 대해서도 다루었습니다.
마지막으로, 실무 사례를 통해 이론이 실제 업무에서 어떻게 적용되는지를 이해할 수 있도록 구성하였습니다.
SQL 튜닝의 길잡이, 나침반이 되다
AI 시대가 되어 SQL 튜닝을 돕지만 튜닝 전문가의 역할은 계속 필요합니다. Oracle도 최근 버전인 23에서는 23ai로 출시를 했지만 튜닝의 본질은 변하지 않습니다. 이 책이 여러분의 SQL 성능 최적화 여정에서 확실한 나침반 역할을 하기를 바랍니다. SQL 튜닝 전문가로 성장하기 위한 여정을 지금 시작해 봅시다.
목차
PART 01. Oracle 기본 아키텍쳐
section 01 Oracle Database Architecture
section 02 Memory Architecture
section 03 Process Architecture
section 04 Oracle Storage Structures
PART 02. Oracle 성능 최적화를 위한 기본 원리
section 01 Oracle SQL 성능 최적화 개요
section 02 DB 튜닝 핵심 원리 개요
section 03 Library Cache 효율화 : SQL 파싱 부하 해소
section 04 Database CALL 최소화
section 05 I/O 효율화
PART 03. 성능 튜닝 도구 및 실행 계획 분석
section 01 DBMS_XPLAN.DISPLAY_CURSOR
section 02 DBMS_XPLAN.DISPLAY_AWR
section 03 SQL_MONITOR
section 04 실행 계획 순서 기본 분석법
section 05 실행 계획 순서 예외 사항 분석법
PART 04. INDEX ACCESS PATTERN
section 01 B-Tree INDEX 구조
section 02 INDEX RANGE SCAN
section 03 INDEX RANGE SCAN DESCENDING
section 04 INDEX UNIQUE SCAN
section 05 INDEX RANGE SCAN(MIN/MAX)
section 06 ROWID ACCESS
section 07 INDEX 컬럼 가공
section 08 CLUSTERING FACTOR
section 09 FULL TABLE SCAN
section 10 INDEX ACCESS 조건, FILTER 조건, 선택도
section 11 INDEX SKIP SCAN
section 12 INDEX INLIST INTERATOR
section 13 INDEX FULL SCAN
section 14 INDEX FULL SCAN(MIN/MAX)
section 15 INDEX FAST FULL SCAN
section 16 INDEX COMBINE
section 17 INDEX JOIN
section 18 INDEX COMBINE과 INDEX JOIN의 차이점 비교
section 19 INDEX FILTERING 효과
PART 05. INDEX 설계 전략
section 01 선택도와 카디널리티
section 02 INDEX 컬럼 입력, 삭제, 갱신
section 03 INDEX 선정 기준
section 04 테이블 유형별 INDEX 설계 기준
section 05 결합 컬럼 INDEX 특징 및 컬럼 순서 결정 기준
section 06 INDEX 선정 절차
section 07 INDEX 설계 예제
PART 06. JOIN
section 01 NESTED LOOP JOIN
section 02 HASH JOIN
section 03 SORT MERGE JOIN
section 04 JPPD(Join Predicate Push Down)
section 05 JOIN 순서가 성능에 미치는 영향
PART 07. 서브쿼리
section 01 FILTER 서브쿼리
section 02 EARLIER FILTER 서브 쿼리
section 03 NL SEMI / ANTI JOIN
section 04 상관관계 서브쿼리(FILTER, NL SEMI JOIN) 활용
section 05 HASH SEMI / ANTI JOIN
section 06 SORT MERGE SEMI / ANTI JOIN
section 07 스칼라 서브쿼리
section 08 비 상관관계 서브쿼리
PART 08. 실행 계획 분리
section 01 CONCATNATION을 이용한 실행 계획 분리
section 02 UNION ALL을 이용한 실행 계획 분리
PART 09. 페이징 처리
section 01 부분 범위 처리, 전체 범위 처리
section 02 표준 PAGENATION 사용 방법
section 03 표준 PAGENATION 사용 - 최적의 INDEX 존재
section 04 표준 PAGENATION 사용 - 최적의 INDEX 없음
section 05 표준 PAGENATION 사용 - 처리 순서
section 06 PAGING 처리 응용
section 07 웹 게시판 형태에서 PAGING 처리
PART 10. PGA 튜닝
section 01 SORT ORDER BY
section 02 SORT ORDER BY & SORT ORDER BY STEOPKEY (STOPKEY)
section 03 SORT GROUP BY & HASH GROUP BY
section 04 SORT UNIQUE & HASH UNIQUE
section 05 HASH JOIN, HASH SEMI JOIN & HASH ANTI JOIN
section 06 SORT MERGE JOIN, MERGE SEMI JOIN & MERGE ANTI JOIN
PART 11. 분석 함수와 실행 계획
section 01 WINDOW SORT
section 02 WINDOW SORT PUSHED RANK
section 03 WINDOW NOSORT
section 04 WINDOW NOSORT STOPKEY
section 05 WINDOW BUFFER
section 06 분석 함수 실행 계획 심화
PART 12. 동일 데이터 반복 ACCESS 튜닝
section 01 서브쿼리 OR 인라인뷰를 통한 반복 ACCESS - 분석 함수 활용
section 02 UNION ALL 반복 ACCESS - SQL 통합
section 03 UNION ALL 반복 ACCESS - 카테시안 JOIN
section 04 UNION ALL 반복 ACCESS - 소계 처리 함수의 활용
section 05 UNION ALL 반복 ACCESS - WITH 문의 활용
section 06 UPDATE 문 서브쿼리 통한 반복 ACCESS - MERGE문 활용
section 07 MERGE 대상 테이블 반복 ACCESS
PART 13. 기타 응용 튜닝
section 01 여러 행 → 한 개의 행, 열로 묶기
section 02 한 개의 행, 열로 묶인 데이터 → 여러 행으로 분리
section 03 행(ROW)간의 누적 곱
section 04 카테시안 JOIN 응용 - 일, 주, 월 현황
section 05 INDEX JOIN 응용
section 06 OUTLINE 정보를 이용한 튜닝
PART 14. 옵티마이저
section 01 옵티마이저란?
section 02 10053 Trace
section 03 Heuristic Query Transformation
PART 15. Oracle 트랜잭션과 Redo Log 튜닝
section 01 Transaction
section 02 Redo & Undo
section 03 데이터 변경량과 Redo & Undo
section 04 튜닝 실무 사례
PART 16. 파티셔닝
section 01 개요
section 02 기본 개념
section 03 파티셔닝 유형
section 04 파티션 KEY 전략
section 05 파티셔닝 테이블의 INDEX
section 06 파티션 관리
section 07 파티션 Pruning
PART 17. Oracle Exadata Basic
section 01 Exadata 개요
section 02 오프로딩
section 03 STORAGE INDEX
section 04 HCC (Hybrid Columner Compression)
section 05 SMART FLASH CACHE
section 06 병렬처리
section 07 Exadata에서 개발 시 고려사항
PART 18. Oracle 성능 분석 기본 방법론
section 01 성능 분석 방법론 개요
section 02 핵심 성능 데이터 이해
section 03 성능 분석 유틸리티
section 04 기본적 성능 분석
PART 19. 튜닝 실무 사례
section 01 관련단원 - 4. INDEX ACCESS 패턴
section 02 관련단원 - 4. INDEX ACCESS 패턴
section 03 관련단원 - 6. JOIN
section 04 관련단원 - 6. JOIN(JPPD)
section 05 관련단원 - 7. 서브쿼리
section 06 관련단원 - 6. JOIN, 7. 서브쿼리, 12. 동일 데이터 반복 ACCESS 튜닝 section 07 관련단원 - 8. 실행 계획 분리
section 08 관련단원 - 6. JOIN, 8. 실행 계획 분리
section 09 관련단원 - 7. 서브쿼리, 10. PGA튜닝
section 10 관련단원 - 6. JOIN, 7. 서브쿼리, 10. PGA 튜닝
section 11 관련단원 - 12. 동일 데이터 반복 ACCESS 튜닝
section 12 관련단원 - 5. INDEX ACCESS 패턴, 9. 페이징 처리
section 13 관련단원 - 9. 페이징 처리, 7. 서브쿼리
section 14 관련단원 - 6. JOIN
section 15 관련단원 - 6. JOIN(JPPD)
section 16 관련단원 - 7. 서브쿼리