장바구니 담기 close

장바구니에 상품을 담았습니다.

고성능 데이터베이스 튜닝

고성능 데이터베이스 튜닝

  • 권순용
  • |
  • 비팬북스
  • |
  • 2010-02-26 출간
  • |
  • 376페이지
  • |
  • 190 X 240 X 30 mm /962g
  • |
  • ISBN 9788996204558
판매가

29,000원

즉시할인가

26,100

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
26,100

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

VLDB 튜너나 모델러에게 있어 SQL 최적화에 대한 자신만의 체계를 수립하는 일은 최종 목표이자 계속 가꾸어 나가야 할 대상이기도 하다. 즉, 꿈이면서도 현실 속에서 놓칠 수 없는 보물단지(!)다. 이 책은 SQL 튜닝의 모든 것을 이야기하기 위해 기획된 [고성능 데이터베이스 튜닝]의 두 번째 책이다. 첫 번째 책인 [실행 계획으로 배우는 고성능 데이터베이스 튜닝]에 이어진 내용으로써, 1권에서 다룬 일부 주제를 더 심도 있게 설명하면서, 정렬, 대사 작업, 동적 조건 쿼리와 목록 쿼리, 분석 함수, 그룹 함수, 배치 작업, 구체화된 뷰 등에 대해서 추가로 이야기를 이어 나간다. 본 서 이후 계속 나올 [고성능 데이터베이스 튜닝 시리즈]에서는 DB 튜닝 컨설팅 전문 업체인 엑시엄 정보시스템의 컨설턴트들의 살아 있는 튜닝 이야기가 계속 이어질 것이다. [고성능 데이터베이스 튜닝]의 2권인 이 책과 함께 VLDB에서 이루어질 수 있는 모든 튜닝 기업을 함께 다듬어 갈 수 있기를 기대한다.

[ 이 책의 구성 ]
Chapter 1. 데이터 연결을 자유자재로 작성하자.

프로그램을 작성하다 보면 여러 테이블에 있는 데이터를 연결해야 할 경우가 자주 발생한다. 이러한 경우에 데이터를 어떻게 연결하는가? 대부분의 경우에는 별다른 규칙 없이 SQL을 작성한다. 이제는 테이블을 연결하여 데이터를 추출하는 경우에 SQL을 어떻게 작성할 것인지에 대한 규칙이 있어야 할 것이다. 1장에서는 데이터 연결에 대해 SQL을 어떻게 작성해야 효과적인지를 설명한다.

Chapter 2. 정렬 작업의 최소화가 성능을 보장한다.

정렬 작업의 양에 의해 시스템의 성능이 좌우된다고 해도 과언은 아닐 것이다. 이러한 정렬 작업에 대해 많은 사람들은 어쩔 수 없는 작업이라고 이야기한다. 하지만, 정렬 작업의 많은 부분을 제거할 수 있는 방법이 엄연히 있다. 이러한 방법을 모르기 때문에 지금도 시스템에서 대용량의 정렬 작업을 수행하는 것 같다. 정렬 작업을 줄이는 것이 해당 시스템을 최적화하는 지름길이다. 2장에서는 정렬을 감소시키는 방법에 대해 자세히 설명한다.

Chapter 3. 양쪽 OUTER 조인을 이용하면 대사 작업을 효과적으로 처리할 수 있다.

대사 작업이란 동일한 데이터를 비교하여 그 차이를 확인하는 작업이다. 우리 주위에서는 수 없이 많은 대사 작업이 수행되며, 그 중에서 많은 대사 작업이 시스템의 성능을 저하시키는 것이 현실이다. 또한, 대사 작업에서는 SQL 안에 업무를 삽입해야 하는 경우가 많이 발생한. 이런 이유로 인해 많은 개발자들이 대사 작업을 힘들어 한다. 하지만, 대사 작업은 절대 어려운 작업이 아니다. 대사 작업에 대한 효율적인 방법을 이해한다면 대사 작업을 더 쉽게 수행할 수 있다.

Chapter 4. 동적 조건 쿼리는 하나의 쿼리가 아니다.

동적 조건 쿼리는 어플리케이션에서 자주 사용되는 매우 중요한 쿼리 아키텍처다. 인터넷을 하다 보면 많은 곳에서 콤보 박스 등을 이용하여 전체 데이터 중에서 원하는 데이터만 선택할 수 있는 기능을 보았을 것이다. 이렇게 가변적으로 조건을 선택하는 모든 어플리케이션이 동적 조건 쿼리로 작성된다. 최적화되지 않은 동적 조건 쿼리는 악성 쿼리로 변하기 쉽다. 이제는 동적 조건 쿼리를 악성 쿼리로 작성해서는 안 된다. 4장에서는 동적 조건 쿼리에 대한 정확한 개념과 최적화 방법을 살펴본다.

Chapter 5. 성능 저하의 주범인 목록 쿼리를 최적화하자.

목록 쿼리는 쿼리 자체의 작성도 어렵지만 성능 저하를 발생시키는 주범이 되는 경우가 많이 있다. 이러한 현상 때문에 많은 개발자들이 목록 쿼리를 가장 어려워하는 것 같다. 목록 쿼리는 프로그램 개발 시 왜 문제 발생의 주범이 되는가? 그 이유는 간단하다. 많은 생각 없이 목록 쿼리를 작성했기 때문일 것이다. 또 한 가지 주요 이유는 기존의 잘못된 목록 쿼리를 그대로 이용하기 때문이다. 5장에서는 목록 쿼리에 대한 SQL 작성 방법과 실행 계획을 면밀히 분석한다. 또한, 실무에서 활용할 수 있는 최적화된 목록 쿼리의 작성 방법을 정리하여 설명한다.

Chapter 6. 분석 함수로 통계 레포트를 작성하자.

업무가 복잡해지는 것과 동시에 고객의 요구사항도 다양하게 변하고 있다. 이러한 요구사항에 의해 많은 곳에서는 다양한 통계 레포트를 작성하여 보고를 한다. 이러한 통계 레포트에는 업무가 포함되므로 SQL이 복잡해진다. SQL이 복잡해지는 것도 문제일 수 있지만 더 큰 문제는 대용량의 데이터에 엑세스하기 때문에 성능 저하를 발생시킬 수 있다는 것이다. 이의 주된 이유는 여러 곳에서 통계 레포트를 작성하는 경우에 동일한 테이블에 반복 엑세스하기 때문이다. 하지만, 오라클에서는 이러한 통계 레포트 작성 시 SQL의 양도 감소시키며 성능을 향상시킬 수 있는 방법을 제공한다. 그것이 분석 함수다. 6장에서는 실무에서의 분석 함수의 사용법과 실제 적용 사례를 설명한다.

Chapter 7. 그룹 함수를 최적화하자.

그룹 함수는 프로그램을 개발하면서 사용하지 않을 수 없는 함수다. 프로그램을 개발하다 보면 데이터의 총 건수를 추출하기 위해 COUNT 함수를 사용해야 한다. 또한, 데이터의 합과 평균 값 등을 추출하기 위해 SUM 함수나 AVG 함수를 사용해야 한다. 이와 같은 그룹 함수의 사용이 어려운 것은 아니다. 중요한 것은 그룹 함수는 전체 데이터 처리를 수행하기 때문에 반드시 SQL 최적화가 수행되어야 한다는 점이다. 집합 함수를 많이 사용하면서도 이러한 집합 함수의 최적화에 대해 고려하지 않는 경우가 많다. 이제부터라도 집합 함수의 최적화를 고려해야 할 것이다. 7장에서는 그룹 함수의 최적화 방법을 설명한다.

Chapter 8. 배치 작업의 응답 속도를 100배 빠르게 수행하자.

데이터베이스 시스템을 구축하면서 항상 고민하는 것 중에 하나가 배치 작업의 최적화다. 배치 작업은 대량의 데이터를 처리하기 때문에 많은 시간이 소요되는 것은 당연한 일이다. 그렇다면 어느 정도의 시간이 배치 작업에서는 적당한 수행 시간인가? 이는 데이터의 양에 따라 확연하게 차이를 보일 것이다. 하지만, 중요한 것은 배치 작업을 최적화한다면 예상보다 적은 시간이 소요될 것이다. 배치 작업은 대량의 데이터를 처리하기 때문에 어느 한 부분이라도 최적화되어 있지 않다면 심각한 성능 저하를 발생시킨다. 이제부터 숨겨진 모든 비효율 요소를 정확하게 분석하여 최적화를 수행해야 할 것이다. 8장에서는 배치 작업의 최적화 노하우를 설명한다.

Chapter 9. 구체화된 뷰의 사용은 시대의 요청이다.

과거에는 구체화된 뷰를 DW 시스템 등에서만 국한적으로 사용한 것이 사실이었다. 하지만, 이제는 많은 시스템에서 구체화된 뷰의 사용이 필요하게 되었다. 이는 온라인 업무를 수행하는 시스템에서 데이터가 증가함에 따라 대용량 데이터베이스로 변하는 양상이 뚜렷하기 때문이다. 그렇기 때문에 많은 곳에서 이미 구체화된 뷰를 고려하고 있거나 아니면 이미 적용한 상태다. 구체화된 뷰를 고려하지 않고서는 성능을 최적화하기 힘든 사이트도 늘어나고 있는 것이 사실이다. 9장에서는 구체화된 뷰의 아키텍처를 살펴보고 실무에 바로 적용할 있는 방법을 설명한다.

이 책은 대용량 데이터베이스의 튜닝 및 모델링 컨설팅 업체인 (주)엑시엄 정보시스템의 컨설턴트들의 노하우가 묻어 있는 책이다. 이 책의 1권에 해당하는 “실행 계획으로 배우는 고성능 데이터베이스 튜닝” 이후 1권에서 다루지 못했던 상세 내용과 새로운 주제들을 섬세하게 설명하고 있다.

이 책에는 1권과 동일한 방식으로 61개의 주제가 수록되어 있다. 사실, 더 많은 주제가 있었지만 분량이 방대해지는 것과 논점이 흐려지는 것을 막기 위해서 최대한 줄여서 61개로 압축하였다. 1권이 튜닝에서 최적화를 이루기 위해서 전반적으로 알아야 할 주제로 구성되어 있다면, 이 책은 성능 최적화를 이룸에 있어서 성능을 저하시킬 수 있는 요인을 추출하고, 이들 성능 저하 요인을 제거하는 방법을 중심으로 기술하였다. 또한 실제 프로젝트를 진행하면서 성능을 향상시킬 수 있는 주제들을 선별하여 수록하였다.

이 책이 속한 [고성능 데이터베이스 튜닝] 시리즈를 통해 튜닝 전문가가 더 많이 나올 수 있다면 더 할 바람이 없다. 건투를 빕니다!

목차

저자 서문
이 책의 구성

Chapter 1. 데이터 연결을 자유자재로 작성하자.

조인 SQL 작성, 과연 어려운가?
FROM 절을 이용한 일반 조인과 서브쿼리를 서로 변경하자.
FROM 절의 조인 테이블을 서브쿼리로 변경하여 성능을 향상시키자.
서브쿼리의 테이블을 일반 조인으로 변경하여 성능을 향상시키자.
FROM 절을 이용한 일반 조인을 스칼라 서브쿼리로 변경하여 성능을 향상시키자.
스칼라 서브쿼리를 FROM 절을 이용한 조인으로 변경하여 성능을 향상시키자.
데이터 연결은 데이터 연결 법칙을 따른다.

Chapter 2. 정렬 작업의 최소화가 성능을 보장한다.

고객의 요구 사항에서부터 정렬이 시작된다.
정렬의 모든 것을 알아야 정렬을 사용하지 않고 해결할 수 있다.
ORDER BY 절의 사용을 감소시키면 성능은 보장된다.
단순 정렬의 감소는 인덱스만 고려하면 된다.
WHERE 절의 결합 조건 및 결합 ORDER BY 절은 결합 인덱스로 정렬을 감소시켜야 한다.
선분 조건도 정렬을 제거시킬 수 있다.
조인도 ORDER BY 절을 제거할 수 있다.
GROUP BY 절도 정렬을 수행하여 데이터를 추출한다.
GROUP BY 절에 의한 정렬도 인덱스를 이용하여 제거한다.
IN 절에도 정렬이 발생할 수 있다.
IN 절이 인덱스를 이용하면 정렬된 값이 추출된다.
UNION 집합 연산자를 이용할 경우에도 정렬의 최소화는 가능하다.
MINUS 집합 연산자를 NOT EXIST나 NOT IN으로 변경하여 정렬을 제거할 수 있다.

Chapter 3. 양쪽 OUTER 조인을 이용하면 대사 작업을 효과적으로 처리할 수 있다.

OUTER 조인은 조인 타입이다.
OUTER 조인의 성능에 유의하라.
대사 작업은 엄청난 성능 저하를 발생시킬 수 있다.
UNION ALL 집합 함수를 이용하여 대사 작업을 최적화하자.
복잡한 대사 작업도 UNION ALL 집합 연산자로 최적화할 수 있다.
UNION ALL 집합 연산자를 이용한 대사로 데이터 정합성을 100배 빠르게 맞출 수 있다.

Chapter 4. 동적 조건 쿼리는 하나의 쿼리가 아니다.

동적 조건 쿼리는 경우의 수 만큼 하나 하나의 쿼리로 작성할 수 없다.
2개의 조건에 의한 동적 조건 쿼리를 최적화하자.
n차 동적 조건 쿼리 최적화로 성능을 향상시키자.
동적 ORDER BY 쿼리를 최적화하자.
동적 WHERE 조건 쿼리와 동적 ORDER BY 쿼리의 결합을 최적화하자.

Chapter 5. 성능 저하의 주범인 목록 쿼리를 최적화하자.

목록 쿼리를 어려워하는 이유
목록 쿼리의 전체 데이터 처리 방식과 n-Row 처리 방식을 이해하자.
조인을 이용한 목록 쿼리도 n-Row 처리로 해결해야 한다.
n-Row 처리를 수행하는 목록 쿼리에도 비효율은 존재한다.
n-Row 처리를 수행하는 목록 쿼리의 비효율을 제거하자.
비효율을 제거한 n-Row 처리의 목록 쿼리와 COUNT 쿼리는 결합 목록 쿼리가 될 수 있다.
조인 목록 쿼리를 결합 목록 쿼리로 100배 빠르게 할 수 있다.
결합 목록 쿼리와 n-Row 처리 목록 쿼리의 성능을 최적화하자.

Chapter 6. 분석 함수로 통계 레포트를 작성하자.

통계 레포트는 온라인처럼 처리가 불가능한가?
분석 함수는 함수의 부분 집합이다.
분석 함수는 윈도우로 시작하여 윈도우로 끝난다.
서브 윈도우와 메인 윈도우의 이해는 분석 함수의 시작이다.
서브 윈도우를 이해하면 분석 함수는 쉬워진다.
분석 함수 윈도우의 사용 범위는 무궁무진하다.
동적 GROUP BY 절의 개념을 이해하자.
동적 GROUP BY 절은 이렇게 작성해라.
동적 GROUP BY 쿼리의 성능을 이해하자.

Chapter 7. 집합 함수를 최적화하자.

COUNT 쿼리를 최적화하자.
COUNT 쿼리도 랜덤 엑세스를 감소시키면 성능은 향상된다.
MIN 쿼리와 MAX 쿼리를 최적화하자.
MAX 쿼리를 통한 번호 채번을 최적화하자.
AVG 쿼리를 최적화하자.

Chapter 8. 배치 작업의 응답 속도를 100배 빠르게 수행하자.

배치 작업의 응답 속도는 항상 느린가?
갱신은 UPDATE가 아니며 삭제는 DELETE가 아니다.
효과적인 아키텍처 구현만으로도 성능이 향상된다.

Chapter 9. 구체화된 뷰의 사용은 시대의 요청이다.

구체화된 뷰는 무엇인가?
구체화된 뷰를 왜 사용하는가?
구체화된 뷰를 생성하자.
구체화된 뷰를 이용하여 성능을 최적화하자.
구체화된 뷰에서 쿼리 재작성을 주의하자.

찾아보기

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.