홈 > 부모님 > 부모님 > 소설,일반 > 컴퓨터,모바일
SQL TUNER for PostgreSQL  이미지

SQL TUNER for PostgreSQL
기본원리편
DBian(디비안) | 부모님 | 2026.03.01
  • 정가
  • 39,000원
  • 판매가
  • 37,050원 (5% 할인)
  • S포인트
  • 1,950P (5% 적립)
  • 상세정보
  • 18.8x24.5 | 0.886Kg | 460p
  • ISBN
  • 9791191941135
  • 배송비
  • 2만원 이상 구매시 무료배송 (제주 5만원 이상) ?
    배송비 안내
    전집 구매시
    주문하신 상품의 전집이 있는 경우 무료배송입니다.(전집 구매 또는 전집 + 단품 구매 시)
    단품(단행본, DVD, 음반, 완구) 구매시
    2만원 이상 구매시 무료배송이며, 2만원 미만일 경우 2,000원의 배송비가 부과됩니다.(제주도는 5만원이상 무료배송)
    무료배송으로 표기된 상품
    무료배송으로 표기된 상품일 경우 구매금액과 무관하게 무료 배송입니다.(도서, 산간지역 및 제주도는 제외)
  • 출고일
  • 1~2일 안에 출고됩니다. (영업일 기준) ?
    출고일 안내
    출고일 이란
    출고일은 주문하신 상품이 밀크북 물류센터 또는 해당업체에서 포장을 완료하고 고객님의 배송지로 발송하는 날짜이며, 재고의 여유가 충분할 경우 단축될 수 있습니다.
    당일 출고 기준
    재고가 있는 상품에 한하여 평일 오후3시 이전에 결제를 완료하시면 당일에 출고됩니다.
    재고 미보유 상품
    영업일 기준 업체배송상품은 통상 2일, 당사 물류센터에서 발송되는 경우 통상 3일 이내 출고되며, 재고확보가 일찍되면 출고일자가 단축될 수 있습니다.
    배송일시
    택배사 영업일 기준으로 출고일로부터 1~2일 이내 받으실 수 있으며, 도서, 산간, 제주도의 경우 지역에 따라 좀 더 길어질 수 있습니다.
    묶음 배송 상품(부피가 작은 단품류)의 출고일
    상품페이지에 묶음배송으로 표기된 상품은 당사 물류센터에서 출고가 되며, 이 때 출고일이 가장 늦은 상품을 기준으로 함께 출고됩니다.
  • 주문수량
  • ★★★★★
  • 0/5
리뷰 0
리뷰쓰기

구매문의 및 도서상담은 031-944-3966(매장)으로 문의해주세요.
매장전집은 전화 혹은 매장방문만 구입 가능합니다.

  • 도서 소개
  • 출판사 리뷰
  • 작가 소개
  • 목차
  • 회원 리뷰

  도서 소개

SQL 성능 문제는 ‘요령’이 아니라 ‘원리’ 싸움입니다.
이 책은 당장 써먹을 수 있는 단편적인 팁 모음이 아닙니다. 만약 SQL 성능 문제에 대한 즉각적인 해법만을 찾는다면 이 책은 적합하지 않습니다.
이 책은 SQL 튜닝의 기본 원리를 심도 있게 다룹니다. 원리를 중심에 두고, 그 원리가 실제로 어떻게 작동하는지 예제와 실행계획, 충실한 설명과 그림을 통해 하나씩 검증하듯 정리했습니다. 원리를 정확히 이해하고 경험을 쌓아가면, 실무에서 어떤 형태의 성능 문제를 만나더라도 스스로 원인을 찾고 해법을 도출할 수 있습니다.
또한 이 책에서 다루는 기본 원리는 PostgreSQL에만 국한되지 않습니다. DBMS가 달라져도 성능을 좌우하는 핵심 메커니즘은 본질적으로 유사하므로, 이 책에서 익힌 사고방식과 접근법은 다른 환경에서도 그대로 적용할 수 있습니다.

  출판사 리뷰

<SQL TUNER for PostgreSQL 기본원리편>은 SQL 성능 문제를 ‘빠른 처방’이 아니라 ‘확실한 이해’로 해결하도록 이끄는 책입니다. 단순히 방법을 나열하지 않고, 성능이 흔들리는 지점을 기본부터 정리한 뒤 예제와 실행 결과, 그림을 통해 독자가 직접 확인하며 따라오게 구성했습니다. 인덱스, 실행 계획 해석, 조인 부하, 트랜잭션 대기, VACUUM까지 실무에서 반복되는 핵심 주제를 다루고 있습니다.
이 원고에서 특히 인상적인 점은 저자의 집필 태도입니다. 저자는 ‘그럴듯하지만 틀린 설명’을 가장 경계하며, 문장 하나가 오해를 만들지 않는지, 예제가 과장되거나 빈틈이 없는지, 설명의 순서가 독자의 사고 흐름과 맞는지까지 끝까지 점검했습니다. 같은 내용을 여러 번 다시 풀어 쓰고, 표현을 깎고, 예제를 재검증하는 과정이 누적되며, 이 책은 ‘알려주는 책’이 아니라 검증 가능한 기준을 남기는 책이 되었습니다.
결과적으로 이 책은 특정 기법을 외우게 하기보다, 성능 문제를 마주했을 때 무엇을 먼저 확인하고, 무엇을 의심하며, 어떤 선택을 피해야 하는지를 스스로 정리할 수 있게 합니다. 제대로 배우고, 오래 써먹을 수 있는 SQL 성능의 기본기를 찾는 독자에게 가장 현실적인 안내서가 될 것입니다.




  작가 소개

지은이 : 유일환
서경대학교에서 컴퓨터공학을 전공하고, 2001년부터 개발자로 커리어를 시작했다. 2005년부터 2017년까지는 중국 삼성전자 판매 법인에서 DA(Data Architecture) 업무를 맡아, 판매·유통·데이터 분석 등 다양한 영역의 데이터베이스를 설계하고 수많은 배치 프로그램과 핵심 SQL을 개발·튜닝했다. 2018년부터는 국내 여러 기업에서 다양한 DBMS의 SQL 튜닝과 데이터 아키텍처 관련 프로젝트를 수행하고 있다. 이전 저서로는 <SQL BOOSTER>와 <평생 필요한 데이터 분석>, <SQL STARTER>가 있으며 대한민국이 데이터 강국이 되기를 바라는 마음으로, 지금도 꾸준히 기술을 전파하고 있다.

  목차

CHAPTER 01 성능을 위한 기본 지식
1-1. SQL 튜닝이란
1-1-1. SQL 튜닝 사례
1-2. 실습환경 구성하기
1-2-1. ERD
1-2-2. 실습환경 구성하기
1-3. SQL 튜닝의 주요 요소
1-3-1. Index
1-3-2. 비효율 SQL 변경
1-3-3. 힌트 사용
1-3-4. SQL 성능에 영향을 주는 기타 요소
1-4. SQL 처리 과정
1-4-1. Parsing
1-4-2. Optimization
1-4-3. Execution
1-4-4. Fetch
1-5. 옵티마이저와 실행계획
1-5-1. 옵티마이저
1-5-2. 실행계획
1-5-3. 옵티마이저와 SQL 튜닝
1-5-4. 비용 기반 옵티마이저
1-5-5. 옵티마이저가 말하길, 나도 힘들다.
1-6. 통계
1-6-1. 테이블 통계(pg_class)
1-6-2. 컬럼 통계(pg_stats)
1-6-3. 통계는 언제 만들어지는가?
1-7. I/O
1-7-1. I/O
1-7-2. 블록
1-7-3. 데이터 블록과 인덱스 블록
1-7-4. 메모리 vs. 디스크
1-7-5. 메모리 I/O vs. 디스크 I/O
1-7-6. Shared Buffer

CHAPTER 02 실행계획
2-1. 실행계획
2-1-1. EXPLAIN
2-1-2. 오퍼레이션
2-1-3. 실행계획 트리
2-1-4. Child First
2-1-5. 힌트의 기본 사용법
2-2. EXPLAIN 옵션
2-2-1. EXPLAIN ANALYZE
2-2-2. 추가 옵션
2-2-3. BUFFERS
2-2-4. actual time 해석

CHAPTER 03 인덱스
3-1. 인덱스 개념 잡기
3-1-1. 인덱스란?
3-1-2. Seq Scan
3-1-3. 인덱스로 Seq Scan 비효율 개선하기
3-1-4. 인덱스 개념 잡기
3-2. 테이블과 인덱스 구조
3-2-1. 테이블 구조
3-2-2. 인덱스 구조
3-2-3. 트리 구조의 데이터 탐색
3-2-4. 인덱스 구조는 어떻게 만들어지는가?
3-2-5. 인덱스의 실제 크기
3-2-6. 인덱스 높이와 균형
3-3. 테이블에서 데이터를 찾아내는 방법
3-3-1. 테이블 전체를 스캔해 찾기
3-3-2. 인덱스를 활용해 찾기
3-3-3. 레코드의 물리적 주소를 활용해 찾기
3-3-4. 방법에 따른 실제 I/O 검증해 보기
3-4. 인덱스 스캔 심화
3-4-1. 인덱스 시각화
3-4-2. 인덱스 스캔 3단계
3-4-3. 인덱스 처리 조건과 테이블 처리 조건
3-4-4. 테이블 접근이 없는 인덱스 스캔
3-4-5. 테이블 접근과 성능
3-4-6. 어떤 인덱스를 사용할까?
3-4-7. 인덱스 분류

CHAPTER 04 PostgreSQL의 인덱스 스캔
4-1. Index Scan
4-1-1. 동등 조건
4-1-2. 범위 조건
4-1-3. Filter와 Rows Removed by Filter
4-2. Index Only Scan
4-2-1. Index Only Scan
4-2-2. Index Only Scan vs. Index Scan
4-2-3. Index Only Scan의 Heap Fetches
4-3. Bitmap Scan
4-3-1. Bitmap Index Scan & Bitmap Heap Scan
4-3-2. Bitmap Scan vs. Index Scan
4-4. Index Full Scan
4-4-1. Index Full Scan
4-4-2. Index Full Scan vs. Index Only Scan

CHAPTER 05 인덱스와 성능
5-1. 어느 컬럼에 인덱스를 만들 것인가?
5-1-1. ord_st
5-1-2. shop_id
5-1-3. pkup_dtm
5-1-4. 어느 컬럼에 인덱스를 만들 것인가?
5-2. 복합 인덱스
5-2-1. 단일 인덱스 vs. 복합 인덱스
5-2-2. 복합 인덱스
5-2-3. 복합 인덱스 컬럼 순서와 리프 블록
5-2-4. 복합 인덱스 검색키 결정 규칙
5-2-5. Index Filter
5-2-6. 복합 인덱스의 선두 조건 누락
5-2-7. 복합 인덱스 설계하기
5-3. 생각보다 까다로운 인덱스
5-3-1. 검색키와 스톱키가 없는 SQL
5-3-2. 주의가 필요한 날짜 컬럼
5-3-3. 언제까지 인덱스를 사용할 것인가?
5-3-4. 너무 많은 인덱스의 위험성
5-3-5. 중복된 인덱스
5-3-6. Prepared Statements와 Generic Plan
5-3-7. LIKE 패턴과 인덱스
5-4. 특별한 인덱스 기법
5-4-1. 커버링 인덱스
5-4-2. 부분 인덱스
5-4-3. CLUSTER
5-4-4. Bitmap Scan의 효율성
5-4-5. Function-based index
5-4-6. BitmapAnd
5-4-7. Index Skip Scan

CHAPTER 06 정렬과 집계
6-1. 정렬 부하
6-1-1. external merge
6-1-2. work mem과 quicksort
6-2. 정렬과 인덱스
6-2-1. No Sort
6-2-2. Backward Scan
6-2-3. LIMIT n
6-2-4. Sort 제거를 위한 인덱스
6-2-5. Sort 제거보다 WHERE 절에 집중
6-2-6. Incremental Sort
6-2-7. ORDER BY를 빼먹지 말자.
6-2-8. 정렬을 피할 수 없다.
6-3. 집계
6-3-1. GroupAggregate와 HashAggregate
6-3-2. GROUP BY 컬럼 최소화
6-3-3. LIMIT MIN/MAX
6-3-4. 변형된 컬럼의 MIN/MAX
6-3-5. LIMIT MIN/MAX를 위한 인덱스

CHAPTER 07 조인의 내부 처리 방식
7-1. NL 조인 이해하기
7-1-1. 조인의 내부 처리 방식
7-1-2. NL 조인
7-1-3. 드라이빙과 드리븐
7-1-4. NL 조인의 실행계획
7-2. 머지 조인 이해하기
7-2-1. 머지 조인
7-2-2. 머지 조인의 실행계획
7-3. 해시 조인 이해하기
7-3-1. 해시 조인
7-3-2. 빌드 입력과 프로브 입력
7-3-3. 해시 조인의 실행계획
7-4. 조인 힌트
7-4-1. 조인 알고리즘과 데이터 집합의 역할
7-4-2. 조인 힌트 사용법
7-4-3. Leading 힌트
7-4-4. 여러 테이블의 조인 힌트

CHAPTER 08 조인과 성능
8-1. NL 조인과 성능
8-1-1. NL 조인의 비효율
8-1-2. 드리븐 테이블의 인덱스
8-1-3. 드리븐 테이블의 필터 조건
8-1-4. 드라이빙 테이블의 인덱스
8-1-5. 드라이빙 집합 선택
8-1-6. 드리븐 테이블의 인덱스 컬럼 순서
8-1-7. 무조건 작은 집합을 드라이빙 할 것인가?
8-1-8. 여러 테이블의 NL 조인
8-1-9. 조인 조건의 Index Cond 확인
8-1-10. NL 조인의 인덱스 전략
8-2. 머지 조인과 성능
8-2-1. 머지 조인의 비효율
8-2-2. 머지 조인을 위한 인덱스
8-2-3. 머지 조인의 한계
8-3. 해시 조인과 성능
8-3-1. 대용량 조인에 탁월한 해시 조인
8-3-2. 해시 조인을 위한 인덱스
8-3-3. 빌드 입력 선택
8-3-4. 프로브 입력 최적화
8-3-5. 테이블 원래 크기만으로 조인 방식을 결정하면 안 된다.
8-3-6. 해시 조인은 동등 조인 조건이 필수
8-3-7. 조인 컬럼에 인덱스가 없다면 해시 조인
8-4. 조인과 성능
8-4-1. 인덱스 힌트만으로 조인 알고리즘 선택하기
8-4-2. 상황에 따른 인덱스 선택
8-4-3. 코드명 조회 - 스칼라 서브쿼리 vs. 조인
8-4-4. 조인 횟수를 줄이자
8-4-5. 조인을 추가하자
8-4-6. 조인 튜닝 전략

CHAPTER 09 트랜잭션과 모니터링
9-1. 트랜잭션
9-1-1. 트랜잭션
9-1-2. 오토 커밋과 명시적 트랜잭션
9-1-3. xid
9-1-4. LOCK
9-2. 트랜잭션 테스트와 모니터링
9-2-1. 테스트 준비
9-2-2. pg_locks
9-2-3. 대기(wait) 상태
9-2-4. pg_stat_activity
9-2-5. 사라진 500원
9-2-6. SELECT FOR UPDATE
9-2-7. CREATE INDEX CONCURRENTLY

CHAPTER 10 VACUUM
10-1. VACUUM을 왜 하는가?
10-1-1. Dead Tuple
10-1-2. Freeze
10-2. VACUUM
10-2-1. Autovacuum
10-2-2. 수동 VACUUM
10-3. VACUUM과 성능
10-3-1. UPDATE와 용량 변화
10-3-2. VACUUM과 성능
10-3-3. 데드 튜플 최소화 전략
10-3-4. 배치와 데드 튜플
10-3-5. 매뉴얼 커밋과 베큠

  회원리뷰

리뷰쓰기

    이 분야의 신상품