티스토리 뷰

생활/책

[책] 업무에 바로 쓰는 SQL 튜닝

Jaeyeon Baek 2021. 7. 14. 09:12

튜닝! 실전이다

한빛미디어에서 SQL 튜닝을 정말 쉽고 친절하게 알려주는 책이 등장했습니다. 바로 "업무에 바로 쓰는 SQL 튜닝"인데요, 이전에도 한빛미디어에서 SQL 관련된 책은 여럿 출판된 이력이 있습니다. "데이터 분석을 위한 SQL 레시피"가 아마 대표적일 것 같네요. 데이터 분석을 위한 SQL 레시피는 데이터 엔지니어를 위한 책이었다면 이번 SQL 튜닝 책은 데이터베이스를 다루는 모두를 위한 책입니다. 심지어 SQL 입문 서적으로도 손색이 없어 보입니다. 튜닝의 기초부터 차근차근 알려주거든요. 첫 장부터 마지막 장까지 숨도 안 쉬고 단숨에 읽을 정도로 재밌습니다. 딱 하나 유일하게 아쉬웠던 점은 실습환경이었는데요. MySQL을 로컬 PC에 설치하는 방법을 다루고 데이터를 불러오는 방법을 설명하는 부분입니다. 에.. 아무래도 대중적인 책으로 만들려는 상황이었을 테니 이해는 됩니다만, 이 책을 읽는 독자를 생각했을 때 mysql 정도는 docker로 한방에 설치하는 설명이 있었으면 어땠을까 싶더라고요. 한 페이지 정도만 할애해도 충분했을 텐데요. 아무튼, 책의 상세 내용은 스포가 될 수 있기 때문에 언급하지 않고 목차를 기준으로 큰 틀에서 리뷰를 남겨봅니다. 


 

# 1장_MySQL과 MariaDB 개요

양대 DBMS의 역사적인 소개와 함께 구조적인 차이에 대해 설명합니다. 그리고 SQL 구문에 대한 차이를 조목조목 다룹니다. 1장은 SQL 입문자를 위한 영역으로 생각하면 됩니다. 배경지식을 쌓는다는 생각으로 가볍게 읽으시면 됩니다. 

 

# 2장_SQL 튜닝 용어를 직관적으로 이해하기

2장은 매우 중요합니다. 특히 MySQL의 내부 구조에 대한 이론 설명 부분은 DB를 다루는 사람이라면 꼭 알아야 하는데요. 혹시 제대로 잘 모르고 사용했다면 이번 기회에 확실히 개념을 잡고 가는 게 좋겠습니다. 2장을 온전히 이해해야 다음 장이 수월하게 읽히고, 앞으로 쿼리를 작성할 때 실행계획에 따른 최적화를 고려하게 될 겁니다. 그리고 데이터베이스에서 사용하는 단순한 용어부터 조인 연산 방식 등 설명을 예제 테이블을 기반으로 설명합니다. 

 

# 3장_SQL 튜닝의 실행 계획 파헤치기

MySQL을 설치하고 EXPLAIN, DESCRIBE, DESC 와 같은 실행 계획을 확인하기 위한 키워드를 익힙니다. 실행 계획은 쿼리를 실제로 수행하기 전에 작성한 쿼리가 좋은(효율적인) 쿼리인지 확인하는 용도로 사용되며 실행 계획 결과를 통해 쿼리의 튜닝 포인트를 찾아내게 됩니다. 본문에서는 튜닝 계획의 결과로 출력되는 표의 각 열에 대한 설명을 충분히 해줍니다. 국내 웹사이트에서 이렇게 친절하게 모든 항목을 세세하게 다룬 곳은 본 적이 없는데요, 그만큼 본문에서 정말 잘 설명해주고 있습니다. 아래 보이는 select_type, table, partitions, type, 등과 같은 정보에 대해서 모두 설명해준다고 보면 됩니다. 

mysql> explain select * from user;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
|  1 | SIMPLE      | user  | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
1 row in set, 1 warning (0.02 sec)

 

# 4장_악성 SQL 튜닝으로 초보자 탈출하기

3장에서 explain 키워드를 익혔으니 이제 본격적으로 예제를 통한 실습을 하게 됩니다. 길지 않은 수십 개의 예제를 다루면서 여러 가지 상황을 직면하게 됩니다. 순서는 이렇습니다.

일단 요구사항을 쿼리로 작성한다 -> 수행시간수행 시간 측정 -> 실행계획을 본다 -> 효율적이지 않은 부분을 개선한다 -> 개선된 쿼리를 수행 -> 수행 시간 측정

다양한 기본 예제를 통해 훈련받는 느낌입니다. 4장 후반부에 들어서야 join이 등장해서 쿼리 길이가 살짝 길어지는 정도입니다. DB를 다뤄봤던 사람이라면 여기까지는 눈으로 따라가도 술술 읽힙니다. 입문하는 사람에게는 아직 용어들이 익숙하지 않아서 진도가 더디게 나갈 수도 있는데 걱정하지 말고 일단 완독 하시기를 바랍니다.

 

# 5장_악성 SQL 튜닝으로 전문가 되기

5장은 4장과 같은 패턴으로 구성되어 있습니다. 다만, 차이점은 4장은 기본 예제를 통해 훈련을 한 거고 5장은 이제 실전입니다. 실제 현업에서 사용될만한 요구사항을 쿼리로 다룹니다. 그만큼 쿼리 길이도 길어지죠. 아, 그렇다고 너무 걱정하지 마세요. 수백 줄 수준은 아니니까요. 5장을 통해 실무적인 상황을 훈련하고 나면 어디 가서 당당하게 쿼리 좀 짜 봤다고 말해도 손색이 없을 겁니다.

 


 

그간 여러 SQL 책을 봤지만 이 책은 진짜입니다. SQL 쪽에서 이렇게 강력하게 추천하는 책은 없었습니다. 용어에 대한 설명이며 튜닝에 대한 예제가 너무 잘 정리가 되어 있어서 근처에 두고 계속 찾아보게 될 것 같습니다. 혹시 책이 잘 안 읽히더라도 걱정하지 말고 읽으시길 바랍니다. 완독하고 나서 책을 사전 같은 느낌으로 곁에 두고 쓰시면 됩니다. 전문 DBA가 되려는 분이 아니고선 모든 내용을 달달 외울 필요는 없거든요. 쿼리, DB 용어, 실행계획 등 모르는 게 나왔을 때 웹사이트에서 검색해서 나오는 결과를 보는 게 훨씬 빠를지도 모르지만 이 책만큼 상세하게 잘 설명해주는 곳은 없을 겁니다. 이 책을 통해 SQL로 즐거운 여행하시기를 바랍니다 :) 

 


한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

댓글
댓글쓰기 폼