홈 > 교육 > 도서출판
제목 실무 사례로 다지는 고성능 데이터베이스 튜닝
작성자 관리자
작성일자 2011-11-21

 

 

 

대용량 데이터베이스의 튜닝 및 모델링 컨설팅 업체인 (주)엑시엄 정보시스템의 컨설턴트들의 노하우를 담은 책으로, 『실행 계획으로 배우는 고성능 데이터베이스 튜닝』에서 미처 다루지 못했던 상세 내용과 새로운 주제들을 섬세하게 설명하고 있다. 데이터의 정렬, 대사 작업, 동적 조건 쿼리와 목록 쿼리, 분석 함수, 그룹 함수, 배치 작업, 구체화된 뷰 등에 대해서 이야기를 하고 있다. SQL 튜닝의 모든 것을 안내하고 있으며, 성능 최적화를 이룸에 있어서 성능을 저하시킬 수 있는 요인을 추출하고, 이들 성능 저하 요인을 제거하는 방법을 중심으로 기술하였다. 또한 실제 프로젝트를 진행하면서 성능을 향상시킬 수 있는 주제들을 선별하여 제시하였다.

 

 

저자: 권순용

 

현재, 데이터베이스 전문 컨설팅 업체인 (주)엑시엄 정보시스템의 대표 컨설턴트로 있다. 그 전에 SK C&C에서 DBA, 튜닝, 모델링 업무를 담당하면서 다양한 민간 및 공공 프로젝트에서 핵심적인 역할을 맡아서 진행했다. DBS 컨설팅 동호회(cafe.daum.net/oracity)를 운영하고 있으며, 활발한 저술 활동도 병행해 왔다. 이전에 출간한 책으로는 Inside SQL(2008, Maso Interactive), 초보자를 위한 오라클 10g(2006, 정보문화사), Perfect! 오라클 실전 튜닝(2005, 정보문화사)이 있다. 이외에 마이크로소프트웨어와 경영과 컴퓨터에서 DB 컬럼도 기고하고 있다. 비팬(bpan.com)에서 튜닝 관련 교육도 진행하고 있다.

 

저자: 윤경익

 

현재, 데이터베이스 전문 컨설팅 업체인 (주)엑시엄 정보시스템의 수석 컨설턴트로 있다. 통신 과금 시스템, 증권 거래 플랫폼, 국민건강보험공단 등에서 튜닝과 모델링 업무를 수행한 바 있으며, 마이크로소프트웨어와 Data Times에 컬럼도 기고하였다.

 

저자: 권선민

 

현재, 데이터베이스 전문 컨설팅 업체인 (주)엑시엄 정보시스템의 컨설턴트와 한남대학교 국제IT교육센터의 교수도 겸임하고 있다. 정부통합전산센터와 KT의 각종 시스템에 대한 튜닝 작업에 참여한 바 있으며, 전문 잡지에 컬럼도 기고하고 있다.

 

저자: 이가혜

 

현재, 데이터베이스 전문 컨설팅 업체인 (주)엑시엄 정보시스템의 컨설턴트로 있다. 그 전에 다음 커뮤니케이션과 한국특허정보원에서 DBA로 재직하면서 모델링과 RAC 구축 업무를 수행하였다.

 

저자: 이지웅

 

현재, 데이터베이스 전문 컨설팅 업체인 (주)엑시엄 정보시스템의 컨설턴트로 있다. 그 전에 LG DACOM 등에서 다양한 시스템의 튜닝과 모델링 프로젝트를 수행하였다.

 

 

 

저자 서문
이 책의 구성

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. 구체화된 뷰의 사용은 시대의 요청이다.
구체화된 뷰는 무엇인가?
구체화된 뷰를 왜 사용하는가?
구체화된 뷰를 생성하자.
구체화된 뷰를 이용하여 성능을 최적화하자.
구체화된 뷰에서 쿼리 재작성을 주의하자.

찾아보기

 

 

VLDB 튜너나 모델러에게 있어 SQL 최적화에 대한 자신만의 체계를 수립하는 일은 최종 목표이자 계속 가꾸어 나가야 할 대상이기도 하다. 즉, 꿈이면서도 현실 속에서 놓칠 수 없는 보물단지(!)다. 이 책은 SQL 튜닝의 모든 것을 이야기하기 위해 기획된 [고성능 데이터베이스 튜닝]의 두 번째 책이다.

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

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

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

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

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장에서는 구체화된 뷰의 아키텍처를 살펴보고 실무에 바로 적용할 있는 방법을 설명한다.

 

 

 

 
서울특별시 강남구 역삼로 112, 6층 (역삼동, 밀브리지홀 빌딩)    전화: 070) 8264-9889  팩스: 02) 6499-9889
Copyright (C) 2011. (주) 엑시엄 정보시스템 All Rights Reserved.