저자의 글

끝까지 완주하도록 엮었습니다

개념을 충실하게 담은 얇은 책을 쓰고 싶었습니다. 처음부터 너무 어렵거나 두꺼워서 끝까지 읽기 어려운 책보다는 기본을 익힐 수 있는 책을 내놓고 싶었습니다. 부담 없이 읽을 수 있는 책을 목표로 썼으므로 이 책은 튜닝을 처음 접하는 분이라도 빠르게 읽을 수 있습니다.

튜닝을 공부하기 좋은 책은 시중에 이미 많이 나와 있습니다. 그렇지만 처음 시작할 때 너무 어렵고 분량이 많아 공부에 어려움을 호소하는 분들을 많이 보았습니다. 튜닝은 개발자나 DBA처럼 경력 초반에 바로 실무에 진입하기 어려운 직종입니다. SQL이나 DBMS를 다루는 직종에 종사하면서 튜닝을 조금씩 경험해 보다가 튜너가 되는 케이스가 가장 많습니다.

SQL문 한두 개를 튜닝하기 위해 튜너를 찾는 경우는 매우 드문 일입니다. 이런 경우 개발자나 DBA가 튜닝 업무를 맡게 됩니다. 이 책은 튜너가 아닌 다른 직종에 있으면서 튜닝을 접해야 하는 분에게 권하고 싶습니다. 튜너가 되기 전에 튜닝 감각을 익힐 수 있도록 눈높이를 맞춰 보았습니다. (중략)

튜닝이라는 주제는 어렵습니다. 첫째, 튜닝을 하기 위해 알아야 하는 내용이 만만치 않습니다. 인덱스, 조인 방식, 소트 등 튜닝을 위한 지식과 병목 현상을 판단하기 위해 해독해야 하는 실행계획에 이르기까지 공부해야 할 주제가 한둘이 아닙니다. 하지만 현실은 튜닝 이전에 SQL을 능숙하게 다루는 것도 그리 간단한 문제가 아닙니다.

둘째, 느린 SQL 문을 접하기 어렵습니다. 이 버거운 주제를 버티는 분이라 하더라도 공부하면서 만나는 예제를 직접 실습해 보면 별로 느리지 않습니다. 가끔은 ‘이렇게 빠른 SQL을 왜 튜닝하지?’라는 의문이 생기게 됩니다.

셋째, 충분한 양의 데이터를 확보하기 어렵습니다. 대용량 테이블에서 인덱스 없이 SQL을 실행했을 때 얼마나 느린지 인덱스를 만들고 나서 얼만큼 빨라졌는지 체험해 보기 힘듭니다. 숫자로 느끼는 30초와 실제 실행을 해 보고 기다리는 30초의 느낌은 다를 것입니다. 반복해서 실행해야 하는 경우라면 30초가 얼마나 지루한지 느껴본 사람만 알 것입니다.

많은 분들이 튜닝을 공부하기 어려운 점으로 뽑은 세 가지를 정리하여 책으로 엮어 보았습니다. 우선 버틸 수 있도록 양을 줄였습니다. 이 책은 독자 여러분에게 많은 것을 알려주기 위한 책이 아닙니다. 조금은 덜 중요한 것들을 빼는 작업이 더 어려웠습니다. 두꺼운 책을 버티는 분들이 그 다음으로 힘들어 하는 내용은 책을 통해 느린 SQL문을 접하기 어려운 점입니다. 튜너에게는 실행계획에서 제공하는 수치만으로 성능이 개선됐는지를 파악하는 게 어렵지 않습니다. 하지만 튜닝 입문자에게는 수치 감소만으로 성능 개선을 파악하는 게 쉽지 않습니다.

이 책에서는 실습을 할 수 있도록 충분한 양의 데이터를 제공합니다. 실습하기 위한 스크립트를 실행하면 1500만 건의 주문 테이블과 3500~3800만 건의 주문상품 테이블을 만나볼 수 있게 됩니다. 현장에서 SQL문을 접하기 어려운 경우에도 누구나 쉽게 SQL문을 실습할 수 있도록 데이터를 구축하였습니다. 책에서 제공하는 실습 환경을 바탕으로, 이 책의 주제는 아니지만 다양한 SQL 구문 또한 활용할 수 있을 것이라고 자부합니다. (중략)

자 이제 버티러 갈 시간입니다. 지금부터는 여러분의 차례입니다. 더 나은 사람(?)이 되는 그날까지 버티길 간절히 바랍니다. 저도 응원하겠습니다. 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다