메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

업무에 바로 쓰는 SQL 튜닝

최적의 성능을 위한 MySQL/MariaDB 쿼리 작성과 튜닝 실습

한빛미디어

집필서

판매중

  • 저자 : 양바른
  • 출간 : 2021-07-01
  • 페이지 : 296 쪽
  • ISBN : 9791162244500
  • 물류코드 :10450
  • 초급 초중급 중급 중고급 고급
4.7점 (36명)
좋아요 : 165

SQL 튜닝의 기본 원리와 사례로 배우는 상황별 튜닝 방법 

 

SQL 튜닝은 수많은 데이터를 더 빠르고 강력하게 처리하도록 해주는 가장 중요한 기술이다. 하지만 쉽지 않은 내용 때문에 부담감을 갖고 시작조차 못하는 개발자도 많다. 이 책은 SQL의 기초 지식만 있다면 튜닝까지 쉽게 이해할 수 있도록 직관적인 그림과 예제로 구성되어 있다. 또한 실제 업무에서 발생할 수 있는 악성 사례를 통해 SQL 문을 분석하고 튜닝하는 과정을 직접 실습해본다. 

SQL 문을 작성해본 경험이 적은 독자라도 걱정할 필요는 없다. 이제 막 입사한 데이터베이스 개발자라도 이 책으로 ‘착한 쿼리’를 만들어보면서 실무에 바로 적용할 수 있다!

 

 

 

상세이미지_업무에 바로 쓰는 SQL 튜닝_700px.jpg

 

 

양바른 저자

양바른

낯섦을 극복하고 새로움에 도전하길 좋아하는 IT 엔지니어. IT 업계에서 10여 년간 DBA 역할을 맡고 있다. 학계에서는 컴퓨터공학 전공으로 석사 과정을 밟은 뒤 기술사와 수석감리원 자격을 취득했다. NCS(국가직무능력표준)의 집필 및 자문 역할을 수행했다. 지금은 겸손한 자신감을 유지하면서 새로운 길을 개척하고자 한 걸음씩 나아가고 있다.

1장. MySQL과 MariaDB 개요

1.1 현황

1.2 상용 RDBMS와의 차이점

1.3 MySQL과 MariaDB 튜닝의 중요성

1.4 마치며

 

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

2.1 물리 엔진과 오브젝트 용어

2.2 논리적인 SQL  개념 용어

2.3 개념적인 튜닝 용어

2.4 마치며

 

3장. SQL 튜닝의 실행 계획 파헤치기

3.1 실습 환경 구성하기

3.2 실행 계획 수행

3.3 프로파일링

3.4 마치며

 

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

4.1 SQL 튜닝 준비하기

4.2 SQL 문 단순 수정으로 착한 쿼리 만들기

4.3 테이블 조인 설정 변경으로 착한 쿼리 만들기

4.4 마치며

 

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

5.1 SQL 문 재작성으로 착한 쿼리 만들

5.2 인덱스 조정으로 착한 쿼리 만들기

5.3 적절한 테이블 및 열 속성 설정으로 착한 쿼리 만들기

5.4 마치며

이 책의 구성

 

1장_ MySQL과 MariaDB 개요

MySQL과 MariaDB의 배경과 시장점유율 현황을 알아보고 상용 DBMS와의 차이점, 오픈소스 DBMS인 MySQL과 MariaDB 튜닝의 중요성을 살펴봅니다.

 

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

SQL 튜닝을 수행하기 전에 알아야 하는 물리 엔진의 구조, DB 오브젝트 관련 용어, 논리적인 쿼리문 작성 관련 용어, 개념적으로 통용되는 튜닝 용어를 알아봅니다.

 

3장_ SQL 튜닝의 실행 계획 파헤치기

SQL 튜닝을 수행하는 데 필요한 실습 환경을 구성해봅니다. 튜닝의 방향성을 결정하기 위해 실행 계획을 수행하는 방법과 출력 결과의 의미를 살펴보고, 물리적인 시간 단위 정보인 프로파일링을 이해합니다.

 

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

주어진 SQL 문에서 단순한 텍스트 변경으로 튜닝을 수행하는 실습을 진행합니다. SQL 문에서 일부 구문 또는 테이블 조인 방식을 변경하여 쿼리 튜닝을 수행하는 사례를 확인해봅니다.


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

주어진 SQL 문에서 쿼리를 재작성하거나 DDL data definition language 을 통한 오브젝트 변경으로 튜닝을 수행하는 실습을 진행합니다. SQL 문을 전체적으로 다시 작성하거나, 인덱스를 조정하고, 테이블과 열의 속성을 변경하는 방식으로 쿼리 튜닝을 수행하는 사례를 확인해봅니다.

[이 글은 출판사의 지원을 받아 작성하였습니다]

 

 

 

이 책의 목차

 

 

친절한 책이다. 마치 건축물을 짓듯 매우 기초적인 개념부터 하나하나 설명하며, 실행계획, 튜닝까지 실제 코드를 통해 어떤 원리로 하는지 볼 수 있는 책이다. 하지만 만약 SQL을 처음 접하거나 아직 튜닝의 필요성을 느끼지 못한다면 이 책을 그리 추천하고 싶지 않다. 

 

생활코딩의 이고잉님 강의를 들어봤다면 아마 이 말은 많이 들어봤을 것이다.

"기초를 배운 뒤에 그걸 활용해서 문제를 해결해보고, 문제해결을 더 효율적으로 하기 위해 새로운 개념을 배워야 할 필요성이 생길 때 그 때 배워야 좋습니다" 

 

이 책도 마찬가지다. 더 좋은 성능의 쿼리를 짜야 문제해결을 할 수 있는 상황이라면 이 책이 깊이 와닿겠지만, 그렇지 않은 경우 깊이 와닿지 않을 수 있다.

 

사실 내가 그랬다. 

 

DBA나 다른 튜닝업무를 수행하는 게 아니다보니 이 책에서 기초부터 설명하는 게 내겐 조금 지루하게 느껴졌다. 

 

그렇지만 1장에서 각 SQL별 특징 설명과 2자에서 SQL 수행 프로세스에 대한 설명은 그저 쿼리만 입력하던 내게 DB에 대한 이해를 높여주는 좋은 소스였다. 만약 튜닝부분이 어렵다고 느끼거나 좀 부담스럽다고 느낀다면, 앞에 두 파트만 보고 넘겨도 괜찮다. DB라는 세계가 어떻게 돌아가는지 조금은 이해했으니까. 나중에 돌아와서 튜닝도 보면 된다.

 

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

나는 원래 SQL에 대해 정말 하나도 모르는 개발자였다. 그래서 백엔드로 OTP 인증을 구현할 때에도 txt 파일로 했었다가 json을 공부하고서부터는 json으로만 사용하고 있었다. 나는 이것만으로도 충분히 괜찮다고 생각하였다. 유저가 점점 많아지기 전까지는. 내 api 서비스를 사용하는 유저가 많아져서 동시 접속자가 늘어나면 늘어날수록 file을 읽고 쓰는 데에서 오류가 발생했다. file 읽기/쓰기는 동시간대에 1개의 처리만 가능하기 때문이다. 그래서 나는 동시간대에 여러 작업 처리가 가능한 SQL의 필요성을 깨닫게 되었고, 나는 여러 블로그나 강의를 통해 SQL의 기초를 배우고, 이 책을 통해 SQL의 조금은 더 심화된 버전을 공부하게 되었다. 나는 MySQL을 사용하고 있었는데, 내가 생각한 나의 부족한 점은 쿼리문 작성 용어였다. 이 책을 읽기 전까지는 단순 구글 검색만을 통해서 작성했었지만, 이 책의 2장에서 튜닝 용어를 배우고나서는 SQL을 활용할 수 있었다. 간단하지만 구체적으로 작성되어 있어서 읽기도 편했다.

다운로드.png

 

기본적인 RDBMS를 사용하다보면 튜닝 포인트가 필요하게 되는 상황이 발생이 되는데 적은 데이터에선 사실상 유의미하지 않을 수 있다. 요즘 같이 대용량 데이터를 가공하고 사용하는 환경에서는 필수적인 요소라고 생각이 되는데, 그 해결법을 찾아가는 실마리를 제공해 주는 책인것 같다. 이 책은 기초적인 SQL튜닝에 관하여 설명하고 있다. 기본적인 explain 부터 실행하여 프로파일링 까지 설명을 하고있다. 깊이가 있는 책은 아니지만 초심자가 SQL 튜닝을 하기 위해 기본적인 지식을 쌓기에는 충분한 것같다. 이책에서 많이 실수 하고있는 쿼리에 관해 설명을 해주고있고 이 쿼리가 어떻게 문제가 있는지, 이를 위해 어떻게 해결하는지 설명을 해놓은 책이다. 또한 예제가 많아 기본적인 SQL Analyze 만 분석하고 해결하는 책들에 비해 상세한 설명이 있는것이 특징이다. 프로젝트에서 SQL 튜닝 포인트가 있어서 많이 난감했는데 이책으로 더 깊이 있는 튜닝 포인트를 찾아가는 방법을 빠르게 습득할수있는 지름길 같은 책임이 분명하다. 꼭 기본적인 SQL 기본 개념을 가지고 있고 튜닝에 관해 필요성이 있다고 생각이 든다면 이 책을 읽어보는 것을 추천한다.

 

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

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

image-20210725001839684

이번에는 모던 자바스크립트 핵심 가이드 를 받아보고 싶었지만 이상하게 나에게는 SQL 책이 많이 제공된다..ㅎ; 뭐 사실 이 책도 받아보니 너무 좋아서 리뷰를 마저 써보겠다.

기존 튜닝책 중 가장 유명한 친절한 SQL 튜닝 이라는 책을 한번 정독한 적이 있는데 해당 책과 결은 비슷하다고 생각이 든다. 튜닝이라는 하나의 주제를 가지고 설명해 주는 부분은 같으나 일단 크게 차이점이 몇가지 있다.

구분 친절한 SQL 업무에 바로쓰는 SQL
타겟DB Oracle MySQL/MariaDB
설명방식 개념을 위주로 설명 쿼리를 위주로 설명
난이도 low한 부분까지 설명하여 어렵다 살짝 보고 실무에 사용할 수 있을정도로 쉽다
페이지 560p 296p

각 책에 대한 차이점은 크게 보면 저 정도라고 할 수 있겠다. DB책을 고를때 제일 중요한 부분은 해당 책은 어떤 DB를 타겟으로 삼고있는지가 제일 중요한 부분이다.

업무에 바로쓰는 SQL은 요새 제일 많이 사용하는 MySQL/MariaDB를 타겟으로 했다. 개인적으로 튜닝책은 오라클 튜닝책만 넘쳐나고 MySQL/MariaDB 튜닝책은 한국에서 솔직히 잘 못봤던 것 같다. 동물책이 하나 있던걸로 기억하는데..

아무래도 튜닝의 공통적인 법칙이란게 있긴 하지만 당장 DB의 각 특성상 돌아가는 개념들이 분명히 다를것이라 해당 부분은 굉장히 중요하다.

해당 책은 각 사례별로 예시가 굉장히 많다. 그리고 처음 튜닝을 접하는 사람에게도 약간의 인트로가 쿠션역할을 해서 ‘으악! 너무 어려워!!’ 하면서 책을 다시 닫게 만들지는 않는다.. (거의 모든 DB책이 책을 열자마자 닫게 만든다..)

개인적으로 이 책을 보면서 실행계획을 조회하고 해석하는 법을 알려주는 챕터가 기억에 남는다. 솔직히 다른 책들.. 실행계획 설명해주면서 엄청나게 어렵게 설명한다. 이 책은 핵심만 간단하게 설명해주고 있다.

조금 이 책에 대해서 아쉬운 점은 확실히 개념 설명이 주가 아닌 실무 적용이 주가 되다보니 정확한 개념 설명이 부족하다는 것이다. 약간 ‘여기는 이렇게 하시면 좋구요, 저기는 저렇게 하시면 됩니다. -끝-‘ 이런 느낌이다.. 당장 실무에 적용하고 아 이렇게 돌아가는거구나 얕고 간단하게 슥 읽기는 좋은 책 같다.

이미 튜닝 지식이 어느정도 있는 사람에게는 비추천이지만, 튜닝 맛 한번 보자 싶은 입문자에겐 추천한다.

별점 : ⭐️⭐️⭐️⭐️

한줄평 : 실습을 통해 카프카에 대한 개념을 이해시켜주는 책

이런분께 추천 :

  1. MySQL/MariaDB를 사용하는 분.
  2. 튜닝에 처음 입문하시는 분. (이미 튜닝 지식이 있는 분에게는 비추천)

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

오픈소스 DBMS중 높은 점유율을 가진 MySQL과 MariaDB

누구나 장난감 하나 만들때라도 DB를 써야 한다면

쉽게 선택하게 되는 DBMS.

 

업무용 시스템이라 하더라도 

비용등의 여러이유로 선택하게 되는 DB

 

그렇다고 성능이 떨어지는 건 아니다.

DATA를 저장하는 구조를 만드는 DDL의 사용에 따라서

DATA를 조작하는 DML을 어떻게 사용하느냐에 따라서

엄청난 차이를 보이게 된다.

 

그래서 효율적이고 퍼포먼스가 좋은 간소한 쿼리

만드는 방법을 알려주는 이 책이 필요하다.

 

 

업무에바로쓰는SQL튜닝.jpg

 

DBMS간의 차이점, 물리 엔진의 구조등

쿼리 작성과 무관할 것 같은 튜닝 포인트들부터 시작해서

 

튜닝의 개념과 용어, 튜닝 원리등을 상세하게 알려주며

다양한 종류와 여러 난이도의 쿼리들을 예제로 사용하면서

 

튜닝에서 발생할 수 있는 다양한 상황을 

이론과 실제적인 측면에서 이해할 수 있도록

직관적인 그림과 함께 튜닝 과정을 잘 설명 해준다.

 

 

튜닝의 기본부터 살짝 고쳐주는 초보적인 단계를 거치고

 

근본적인 원인과 나쁜 쿼리가 되는 요소들을 쏙쏙뽑아

착한 쿼리로 만들어주는 전문가적인 단계를 거쳐서

 

아름다운 쿼리의 수준까지 갈 수 있는 튜닝의 길을 알려주는

튜닝의 길잡이 역할을 하기에 충분한 책이다.

 

 

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

IMG_3988.jpeg



업무에 바로 쓰는 SQL 튜닝은 제목으로도 느껴지듯이

초심자가 아닌 그래도 데이터베이스를 알고 SQL을 짜본 사람들을 위한 책이다.

개발을 하다보면 항상 이게 과연 이게 착한 쿼리일까? 라는 고민을 하는 개발자들이 많을 것 같다.

그들에게 어느정도 답을 줄 수 있는 책이라고 생각된다.

 

목차구성

1. mysql과 mariadb 개요

2. sql튜닝 용어를 직관적으로 이해하기

3. sql 튜닝의 실행 계획 파헤치기

4. 악성 sql튜닝으로 초보자 탈출하기

5. 악성 sql튜닝으로 전문가 되기

먼저 mysql과 mariaDB을 구분하고 작성된 책은 처음본듯하다.

아무래도 뿌리가 같지만 줄기가 갈라진지 좀 되었고 특색이 좀 달라졌다보니 구분되어 온 점이 특징이고 장점으로 느껴졌다.

2장에서 세심하게 용어에 대한 자세한 설명 후 3장에서 실행계획으로 넘어가는 걸 보니 거침없고 딱 필요한 것만 있구나 느껴졌다.

사실 explain 많이 눌러보지만 설명을 자주 까먹다보니 펼쳐놓고 보면 좋을꺼 같다.

4장, 5장에서는 본격적으로 어떤식으로 쿼리를 튜닝할지, 인덱스를 조정할 지 등을 알려주는데 실제 업무하는데 잘 생각해보며 적용하면 정말 많은 도움이 될 것같았다.

 

데이터베이스는 아무래도 안쓰이는 곳이 없는 분야이다보니 어떤 개발자가 보아도 좋은 책인 것 같다.



 

 

정말 오랜만에 SQL 튜닝 관련 책이 출간되었다. 교보문고에서 검색해봐도 최근에는 1년에 1~2권이상 출간된 경우가 거의 없다. 이 책이 반가운 이유는 SQL 튜닝이라는 목적으로 좀 더 좋은 쿼리를 작성하는 방법에 대해 알려주는 입문서이기 때문이다. 사실 데이터베이스나 SQL 을 작성하는 방법에 대한 책은 무수히 많고 대학교 수업과정에서 충분히 다루고 있기 때문에 한번만 배워두면 필요할 때 찾아서 쓸 수 있는 정보는 널려있다. 이 책은 더 나아가서 어떤 쿼리가 좋은 성능을 내는지, 얼마나 효율적인지에 대해 어떻게 접근하면서 공부해야하는지 알려주는 책이라고 볼 수 있다.

 

좋은 SQL을 단순히 작성하는데 목적이 있는 것이 아니라 어떤 SQL이 왜 안좋은지, 어떤 SQL은 왜 좋은지 그리고 어떤 메커니즘으로 동작하는지를 설명하고 있기 때문에 단순히 글이나 SQL 만으로는 이해가 어려운 부분이 있다. 그런 부분을 보완하기 위해 이 책은 정말 많은 그림을 포함하고 있다. 위 그림과 같이 특정 SQL이 실행되었을 때 쿼리가 어떤 방식으로 동작하는지 시각적으로 보여줌으로써 처음 배우는 사람들도 쉽게 이해할 수 있도록 한다.

 

다른 영역에 비해서 SQL 튜닝은 아직 관련된 책이 많이 없기 때문에 선택의 폭이 굉장히 좁다. 그러나 몇 개 안되는 책들 중에도 이정도 퀄리티의 입문서가 나와주면 처음 배우는 사람들에게는 정말 큰 도움이 될 것 같다. 10년전 학부를 다닐때, 수년 전 데이터베이스를 쓸 일이 있을 때 이런 책을 먼저 읽어보고 개발했으면 얼마나 더 좋을까 싶다. 지금 SQL을 막 배운 친구들에게 바로 이어서 읽어볼 책으로 꼭 추천하고 싶다.

 

오픈소스 DBMS 중 글로벌 시장 점유율 1위를 차지하고 있는 MySQL , MySQL과 유사한 MariaDB.

우리나라에서도 MySQL, MariaDB 의 비중이 점차 높아지고 있다. 따라서 SQL에 대한 이해, SQL 튜닝 등은 필수적인 과정이 되었다.  그에 반해 SQL 튜닝, 좋은 쿼리를 짜는 방법에 대해 알려주는 서적이 없었는데 한빛미디어에서 SQL 튜닝신간도서가 출간되었다.

 

01234

 

이 책은 MySQL 계열의 쿼리튜닝을 위해 알아둬야하는 용어, 매커니즘을 소개한다.

쿼리튜닝을 통해 쿼리문을 보다 간결하게 짜면서 효율적으로 작성하는 스킬을 터득할 수 있다.

 

 

튜닝에 대한 이해 이전에 MySQL과 MariaDB의 기본적인 쿼리문에 대해 이해한다.

또한 DB 엔진의 구성요소와 SQL문이 수행되는 프로세스에 대해 소개하고있다. 

 

 

SQL튜닝을 위해 기본적으로 알아야하는 용어들에 대한 정리도 빠지지 않는다.

물리엔진과 오브젝트 용어/ 논리적인 SQL 개념 용어/개념적인 튜닝용어로 나눠서 설명한다.

 

 

이외에 SQL 실행 계획, 프로파일링 등 SQL을 다루는 고급 기술들에 대해 소개합니다.

이후 실무적인 SQL 튜닝절차에 대한 소개, 악성 쿼리를 올바르게 튜닝하는 방법에 대해 안내합니다.

 

 

직접 실습을 진행하면서 튜닝 전과 후를 비교할 수 있습니다.

다양한 실습 예제와 코드 비교를 제공하고 있습니다. 

 

 

 

 

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



출처: https://growingarchive.tistory.com/205 [growing archive]

MySql과 MariaDB에 대한 간단한 개요와 함께 바로 튜닝 설명으로 넘어가는 것이 아니라 각종 튜닝의 용어와 과정에 대한 인트로 챕터가 존재한다. 튜닝을 처음 접하는 사람에게 좀 더 쉽게 튜닝에 입문할 수 있도록 하는 안전장치로서 기능해서 좋을 것 같다. 또한 각종 SQL 작업시 의사소통에 필요한 용어들에 대한 기초적인 설명도 들어가 있어 다른 직군이 봐도 인사이트를 얻기 충분한 것 같다. 실제로 튜닝을 공부할 때 중요하게 생각됐던 '드라이빙 테이블', '드리븐 테이블' 에 대한 설명도 들어가 있다. 보통 튜닝시에 인덱스, 조인 등에 대해서 주로 다루는데 조인의 경우 설명하면서 각종 도식과 잘못되면 어떻게 되는지 등에 대한 데이터 구조를 시각적으로 바로 알 수 있어서 좋다. 

튜닝을 처음 공부할 때는 이론의 내용을 실제 맞닥뜨린 적이 있었다 해도 실제로 지식으로 머릿속에 넣는 게 조금 버퍼가 걸릴 때가 있다. 그럴 때 최대한 머릿속에 실제 상황과 유사하게 상황을 상상해보곤 하는데 이 책은 각종 메커니즘과 개념에 대한 도식이 있기 때문에 상상이 어려운 사람들에게도 직관적으로 이해가 가능한 부분이 있다. 

또 반대로 튜닝을 한 번 훑어본 사람은 2장에서 설명하는 튜닝 직관적으로 이해하기 부분을 넘기면서 이해가 부족했던 부분에 대한 심화 이해를 진행할 수도 있고 복습에도 꽤 유용한 것 같다. 도식화를 잘 하는 것도 능력이라고 요즘 생각하기 때문에 각종 그림 자료가 더욱 더 와닿았다 ^^

선택도, 카디널리티 등 튜닝공부할 때 꼭 나오는 계산 수치도 빼놓지 않고 설명해서 좋았다.

 

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

 

 

KakaoTalk_20210725_222459198_01.jpg

 

 

이 책은 이제 막 DB를 배우고자 하는 사람들에게 적격인 책이다. 본 책의 구성은 5개의 파트로 나눠져있으며, MySQL과 MariaDB 개요부터 시작해서 초보자가 데이터베이스의 기본을 잘 이해할 수 있게끔 적절한 설명과, 적절한 예시들로 설명되어있다. 특히 효율적인 MySQL 계열에서 쿼리를 잘 짜고싶은 개발자들에게 추천한다. 책 두께도 그렇게 두껍지 않아 SQL 튜닝 입문자들이 갖고다니면서 개념설명과 간단한 예제들을 술술 읽어볼 수 있을 것 같다. 특히나 4장에서 악성 SQL 튜닝으로 초보자 탈출하기 챕터에서 쿼리를 재작성하여 튜닝을 수행하는 실습을 진행하는 부분이 알찼던 것 같다. 

 

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

 



최근 업계에서는 대기업이나 중소기업, 스타트업의 구분없이 고가의 상용 DBMS에서 저가의 오픈소스 DBMS로 이전하는 추세입니다. 이처럼 변화하는 IT 패러다임에 발맞추려면 수백 가지의 오픈소스 DBMS중에서도 글로벌 시장 점유율 1위를 차지하는 MySQL, 그리고 소스 코드가 그와 흡사한 MariaDB를 이해하고 SQL 튜닝을 학습하는 일이 매우 기본적이면서도 필수적인 과정일 것입니다.

이책은 MySQL계열에서 쿼리 튜닝을 수행할 때 알아야 하는 용어들과 메커니즘을 소개하고, 실전에서 발생하는 가벼운 쿼리들과 약간은 복잡한 쿼리들을 활용하여 실제 튜닝하는 과정을 다룹니다. 그 과정에서 기존의 상용 DBMS가 제공하는 다양한 정보와는 달리 적은 양의 정보로 MySQL 계열의 쿼리 튜닝을 수행할 때의 한계를 먼저 인지해야 합니다. 특히 튜너또는 개발자라면 DBMS 메커니즘을 이해하고 이를 바탕으로 쿼리문을 간소하면서도 효율적으로 작성하는 작업이 무엇보다 중요하다는 점을 인식하기를 바랍니다.

 

대상독자

SQL튜닝을 시작하려는 독자 대상의 튜닝 입문서입니다. DBMS 종류를 불문하고 SQL 기초 지식만 있다면 누구나 쉽게 이해할 수 있도록 직관적인 그림과 예제로 구성하였습니다

 

이책의 구성

1장_MySQL과MariaDB 개요

MySQL과 MariaDB의 배경과 시장점유율 현황을 알아보고 상용 DBMS와의 차이점, 오픈소스 DBMS인 MySQL과 MariaDB튜닝의 중요성을 살펴봅니다.

 

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

SQL 튜닝을 수행하기 전에 알아야 하는 물리 엔진의 구조, DB오브젝트 관련 용어, 논리적인 쿼리문 작성 관련 용어, 개념적으로 통용되는 튜닝 용어를 알아봅니다.

 

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

SQL 튜닝을 수행하는 데 필요한 실습 환경을 구성해봅니다. 튜닝의 방향성을 결정하기 위해 실행 계획을 수행하는 방법과 출력 결과의 의미를 살펴보고, 물리적인 시간 단위 정보인 프로 파일링을 이해합니다.

 

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

주어진 SQL문에서 단순한 텍스트 변경으로 튜닝을 수행하는 실습을 진행합니다. SQL 문에서 일부 구문 또는 테이블 조인 방식을 변경하여 쿼리 튜닝을 수행하는 사례를 확인해봅니다.

 

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

주어진 SQL 문에서 쿼리를 재작성하거나 DDL을 통한 오브젝트 변경으로 튜닝을 수행하는 실습을 진행합니다. SQL문을 전체적으로 다시 작성하거나. 인덱스를 조정하고, 테이블과 열의 속성을 변경하는 방식으로 쿼리 튜닝을 수행하는 사례를 확인해봅니다.

 

개발환경

MySQL 8.0.21 버전 및 MariaDB 10.5.4 버전을 기준으로 하였습니다.

 

예제다운로드

저자의 깃허브에 공개되어 있으며, 예제를 내려받고 설치하는 과정을 이 책의3장에 기술되어 있습니다.



총평

MySQL, MariaDB를 사용하면서 개발하는 개발자에게 권하고 싶은 책입니다. 개발자로서 SQL 튜닝에 부담감을 느끼거나 시작조차 못하는 개발자들에게 기초지식만 있다면 쉽게 튜닝까지 이해할수 있게 직관적인 그림과 예제로 구성되어 있습니다. 또한 실제 업무에서 발생할 수 있는 악성 사례를 통해 SQL문을 분석하고 튜닝하는 과정을 직접 실습해 알기 쉽도록 하였습니다. 관련 종사자라면 꼭 한 번씩 읽어보시면 많은 될 것입니다.

 



이 글은 2021년 7월 한빛미디어에서 진행하는 <나는 리뷰어다> 프로그램에 참여하게 되어 책을 제공받아 글을 작성하였습니다.

 

컴퓨터공학을 전공했거나 개발자를 꿈꾸는 사람이라면 한 번쯤은 SQL을 들어봤을 것이다.

SQL은 RDBMS(관계형 데이터베이스 관리 시스템)의 데이터를 관리하기 위해 설계된 프로그래밍 언어로, DB에 저장된 자료를 검색하고 관리하며, Table을 생성 및 수정할 수 있다.
그 과정에서 개발자는 Table을 어떻게 설계하고, Query을 사용하면서 시스템 성능까지도 고민을 하게 된다. 실제로 사소한 설계에서부터 어떻게 설계하고 사용하냐에 따라 시스템 성능에 큰 영향이 끼치며 속도가 천차만별로 바뀌게 된다.

 

오늘은 다양한 RDBMS 중 오픈소스로 공개되어 있으며, 무료 RDMBS로 유명한 MySQL/MariaDB을 사용해서 쿼리를 작성하고 튜닝을 실습에 대해 나와 있는 책에 대해 소개하고자 한다.

 

책 소개


업무에 바로 쓰는 SQL 튜닝 표지 (출처: 한빛미디어)
  
업무에 바로 쓰는 SQL튜닝 책 일부분

이 책은 위의 책 내용을 보면 알 수 있듯이 초보자도 쉽게 알아볼 수 있도록 그림을 포함하여 설명을 해주고 있다. 따라서 SQL문법을 아는 사람이라면 누구나 쉽게 이해할 수 있다. 또한 실습 환경을 구축하고 다양한 사례를 예로 들어 SQL문을 분석하고 튜닝할 수 있도록 실행 시간까지 나와 쉽게 내용을 확일 할 수 있다.

목차


1장. MySQL과 MariaDB 개요
2장. SQL 튜닝 용어를 직관적으로 이해하기
3장. SQL 튜닝의 실행 계획 파헤치기
4장. 악성 SQL 튜닝으로 초보자 탈출하기
5장. 악성 SQL 튜닝으로 전문가 되기

책의 목차 1장부터 보면 알 수 있듯, MySQL과 MariaDB는 서로 특별한 관계를 갖고 있음을 알 수 있다.
본 책에서는 MySQL과 MariaDB에 대해 설명을 시작으로 SQL 작성법, SQL 튜닝법에 대해 설명하며 튜닝 전 SQL문과 튜닝 후 SQL문을 실행시키며 실행시간까지 비교하여 설명해주고 있다.

 

예상 독자


MySQL과 MariaDB는 무료 RDMS로써 실제 대학생들이 프로젝트를 진행할 때 많이 사용하며, 학교 정규수업 중 하나인 데이터베이스 수업에서도 SQL문법을 배우기 때문에 많은 사람들에게 친숙한 RDBMS 서비스이다.
하지만 사람에 따라 SQL문법을 쓰는 방식이 서로 다른 경우도 있으며, 이에 따라 실제 서비스에서 엄청난 시스템 성능 차이를 보여줄 수 있다.

1. MySQL/MariaDB을 사용하는 개발자 및 전공 학생
2. DB 최적화에 대해 고민이 많은 개발자 및 전공 학생

 

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

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

 

0. 도서 정보

 1) 도서명 : 업무에 바로 쓰는 SQL 튜닝

 2) 작가 : 양바른

 3) 링크

 

 

1. 서평

데이터 추출 및 분석을 위해 SQL 을 이용하다 보면 항상 드는 생각이 있다. '이 쿼리가 최선일까???' 그래서 나름의 생각으로 쿼리를 이렇게도 고쳐보고 저렇게 고쳐도 보면서 나름의 감과 비법을 만들면서 쿼리를 짜왔다. 하지만 이게 어떻게 해서 도는지는 알 수가 없었다. 나름 DB를 공부해보기 위해서 딱딱한 표지로 뒤덮힌 굵은 책도 사보았지만, 그런 책은 내가 원하는 내용보다 너무 많은 내용이 들어 있었기에 보기가 힘들었다. 이 책은 나와 같이 뭔가 쿼리를 효율적으로 짜고 싶은데, 처음부터 다 보기는 싫고... 의 마음을 가진 분들에게 알맞은 입문용 책이라고 할 수 있다. 

 

이 책은 5장으로 이루어져 있으며, 순서대로 DB의 소개, SQL 용어의 소개 및 연산 방식, SQL의 실행 계획을 확인하는 방법 및 각 용어의 소개, 간단한 예제를 통한 실습으로 이루어져 있다. 개인적으로 가장 맘에 드는 부분은 4, 5장에 포함된 실습 부분이다. 다른 튜닝 책을 보면 굉장히 길게 작성된 쿼리를 수정하는 것을 많이 보았는데 나 같은 튜닝 입문자의 경우에는 코드를 보는 것부터 힘이 들게 마련이다. 하지만, 이 책의 예제는 짧게는 한 줄, 길면 열 줄 정도라 부담없이 볼 수가 있다. 

 

읽을 때는 순서대로 읽는 것이 가장 좋겠지만 4, 5장의 실습예제 부분부터 바로 봐도 크게 무리는 없을 것으로 보인다. 예제를 보면서 용어들이 나오면 사전을 보듯이 앞 부분에서 용어를 다시 찾아 보는 것도 효율적으로 볼 수 있다고 생각한다. MySQL, MariaDB 로 작성되어 있기에 그 부분은 참고하길 바란다.

 

KakaoTalk_20210725_141740152.jpg

 

 

 

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

백엔드 개발자로 살아가기 위해서 꼭 필수적인 SQL에 대해서 학습하고자 해당 책을 보았다.

전체적인 책 구조는 MYSQL, 오라클, MariaDB 3구조로 나뉘어서 설명을 하고있다. 도입부부터 MYSQL의 변천사부터 시작하여 오라클의 인수되기전의 MYSQL과 인수 후 어느부분이 달라졌는지 또는 MYSQL이 있는데 왜 MariaDB가 나온 것 인지 명확하게 설명하고 있다.

또한 개념설명만 있는 것이 아니라 실제 실습을 할 수 있도록 하여 이해하기 쉽게 전체 구조가 잡혀있어서 좋았다.

생각보다 책이 두껍지 않아서 술술 잘 읽힐 수 었고, 칼라풀한 그림과 설명 등을 통해 빠르게 실무적으로 어느부분은 집중해야할지 파악할 수 있는 시간이었다.

공부가 아닌 실무에서 직접 SQL 을 제대로 작성해야 하고 튜닝을 해야 하는 입장이라면

어떻게 해야 할까요?

어설프게 알던 지식으로 복잡한 SQL 이나 성능 문제를 쉽게 풀수는 없을 것입니다.

실제 업무에서 어떤 지식이 필요 한지 그 지식이 찾는 것 조차도 쉽지 않은 것이죠.

 

대다수의 SQL 가이드 책들이 그러하듯 전체 큰그림과 방대한 이론등 초보자 들이 접근하기에는 그 차근차근 알아야 하는 내용이 참 많습니다.

그래서 더욱 접근하기 어려워 지기도 하죠. 내가 궁금 하고 어려웠던 부분을 잘 긁어 주고

그리 어렵지 않은 설명과 내용으로 가이드 해주는 책이 있다면 참 좋겠다고 생각하는 분들도 많을 것이구요.

책 한권으로 모든 문제와 궁금증을 해결 할순 없겠지만.

Mysql 과 Mariadb 를 사용하면서 튜닝에 대한 시작과 접근법이 필요 하다면

꽤 괜찮은 책이 한빛 미디어에서 나왔네요. 

 

제가 생각하는 이 책의 장점.

1. 두께가 일단 한번 편하게 읽기에 부담가지 않는 분량입니다.

너무 두껍고 필요 할때 찾아보는 형태의 튜닝 책들은 초보자가 보기에 너무 부담스러겠죠.

2. 국내 대부분의 튜닝 및 sql 가이드가 Oracle db 에 포커스가 되어 있는 상황에서

요즘 부각 받고 있는 Mysql , MariaDB 에 대한 가이드 라는 점입니다.

3. 이해 쉬운 표현으로 튜닝에 대한 기본 적인 감을 잡게 도움을 줍니다.

초보자나 업무에 바로 적용 하고 싶은 내용이 필요 한 독자들이 관심을 가질 파트가

아래 2 파트 일겁니다.

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

주어진 SQL 문에서 단순한 텍스트 변경으로 튜닝을 수행하는 실습을 진행합니다. SQL 문에서 일부 구문 또는 테이블 조인 방식을 변경하여 쿼리 튜닝을 수행하는 사례를 확인해봅니다.

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

주어진 SQL 문에서 쿼리를 재작성하거나 DDL data definition language 을 통한 오브젝트 변경으로 튜닝을 수행하는 실습을 진행합니다. SQL 문을 전체적으로 다시 작성하거나, 인덱스를 조정하고, 테이블과 열의 속성을 변경하는 방식으로 쿼리 튜닝을 수행하는 사례를 확인해봅니다.
 

실제로 저자 분이 튜닝에 대해 고민 하고 초심자를 위해 고민한 부분이 엿보이는 파트 입니다.

아주 복잡하고 어려운 내용을 다루는 책도 필요 하겠지만

Mysql , Mariadb 에 대해 공부하고 업무에 적용 하는 입장의 독자에게 괜찮은 

입문서라고 생각되는 도서입니다.

 

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

SQL 튜닝 표지.jpg

이 책의  구성은 총 5개 장으로 되어 있습니다.

 

1장 MySQL과 MariaDB 개요

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

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

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

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


전체적인 개발 환경은 MySQL 8.0.21 버전 및 MariaDB 10.5.4 버전으로 되어있습니다.


====================================================================

1장 먼저 두 DB의 차이점을 알아보고 버전 별로 어떤점이 다른지를 이야기합니다. 그리고 오라클과 구조적 차이점이 무엇인지 기능 차이는 무엇인지 그리고 SQL 구문의 차이점에 대해 간랴하게 집고 넘어갑니다. 기초적인 지식이 없어도 쉽게 넘어갈 수 있도록 설명이 간결합니다.


2장 ​SQL 튜인 용어에 대하여 알아보는 장입니다. DB 엔진 용어에 대하여 푸드코트의 주문 프로세스를 예로 알기 쉽게 설명하고 있습니다 .그리고 MySQL과 MariaDB의 버전별 지원하는 엔진의 종류를 설명해줍니다. 그리고 SQL 실행 과정에 핵심 역할을 수행하는 오브젝트를 택시에 비유하여 설명하고 있습니다. SQL 문이 어떠한 형태로 동작하는지 그림으로 정말 쉽게 설명해줍니다.


기초적인 테이블 행 열이 무엇인지 기본키, 외래키, 인덱스, 뷰에 대해서 초보자도 쉽게 이해할 수 있도록 간결하게 설명합니다.


그리고 조인에 대하여 아주 쉽고 알차게 설명이 되어져 있습니다. 교차조인과 자연조인 및 블록 중첩 루프 조인, 해시 조인에 대해 도표와 다양한 예시로 설명이 간결하고 이해하기 쉽게 되어 있습니다.


다음으로는 튜닝에 사용되는 용어 정리와 함께 어떤 형태로 스캔이 되는지와 디스크 접근 방법에 대해 다루고 있습니다. 


3장 2장까지는 이론적인 설명이 주로 이루어졌다면 3장부터는 실제 실습을 하게 됩니다. MySQL, MariaDB 설치 방법과 함께 다양한 SQL 명령어를 실습해보도록 하고 있습니다. 실무에서도 유용할 다양한 예제도 등장합니다. 그리고 SQL 실행 계획 수립 방법에 대한 설명과 프로파일링이 무엇인지 간결하게 다양한 예제와 함께 설명이 이우어져서 좋습니다. 


4장 ​이번장에서는 악성 SQL을 튜닝을 통한 다양한 실습을 해보는 장입니다.

실습을 위한 다양한 테이블과 함께 튜닝을 위한 절차를 이해하기 위한 설명과 함께 나쁜 SQL이 어떤 형태인지 알려줍니다. 그리고 튜닝을 통하여 고쳐야 할 부분을 정말 쉽게 설명해주어서 좋습니다. 실무에서도 놓치고 그냥 지나칠 만한 부분도 많은데 이렇게 콕 집어서 설명을 해주고 있어서 너무 좋습니다. 이번장의 다양한 실습은 그냥 넘기지 말고 꼭 직접 실습을 해보는것을 추천합니다.


5장 ​이번장에서는 4장보다 더 복잡하고 어려운 쿼리를 대상으로 직접 실습합니다. 다양한 SQL 문과 함께 튜닝전 수행 결과가 어떤지 그리고 튜닝전 실행 계획은 어떤지를 보여줍니다. 그리고 나서 튜닝을 수행함으로써 어떻게 더 나은 결과를 보여주는지 설명합니다. 이렇게 다양한 쿼리를 직접 수행하고 학습하다보면 많은 부분을 고칠 수 있습니다.


실무에서도 즉시 사용 가능할 정도로 다양한 쿼리에 대한 예제를 제공하고 있습니다. 


이 부분을 잘 응용하고 자신 것으로 만든다면 초보에서 중급자로 거듭날 수 있다고 생각합니다.


====================================================================

이 책은 


이렇게 실무 입장에서도 이 책을 곁에 두고 꾸준히 읽어 볼 수 있는 아주 고급진 책이 아닐까 합니다.


초보자도 이해하기 쉽도록 다양한 예제를 통하여 설명하고 있기에 막연히 어렵다고 느낄 수 있는 SQL을 친근하게 만드는 마법을 경험할 수 있습니다.


정말 강추합니다.


사용자 관점에서 매우 의미 있는 책이라고 생각합니다.


====================================================================

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

저 책의 난이도는 SQL 입문자를 대상으로 하는 것은 아니다. SQL 기초 개념을 잡아가는 입문자를 대상이 아닌, 기반 지식은 갖추고 있으면서 튜닝을 원하는 사람을 대상으로 한다. 총 5개 장으로 구성되어 있고, 초반 1~2장은 튜닝의 중요성과 튜닝 용어들에 대해 다루고 3장에서는 책에서 다루는 부분들에 대한 환경 구성을, 4~5장에서는 본격적인 실습 기반의 튜닝 기법들에 대해서 다룬다.

 

 

실질적으로 튜닝을 다루는 부분은 책의 절반 이내지만, 다양한 시나리오를 제공하고 있고, 체계적인 설명을 위해 그림까지 제공하고 있어서 분량이 부족하다는 생각이 들지 않을 정도로 알찬 책이라고 생각한다.

 

 

 

좋았던 점

실습을 위한 데이터 제공

당연히 제공되어야 하는 부분이겠지만, 많은 양의 목업 데이터들을 만들어놓고 이것들을 바탕으로 실무에서 만날 수 있는 환경을 제공해준다. 책에서 다루는 다양한 케이스들을 테스트하는 데 있어 부족함이 없고, 자신만의 시나리오를 짜고서 다양한 테스트를 해볼 수 있는 좋은 자료를 제공하고 있다.

 

 

 

다양한 사례 제공

튜닝 사례를 제공하고, 거기에 대해서 무엇을 할 것인지 명확히 목표를 설정한다. 단순히 어떻게만 하면 된다고 이야기하고 끝을 내는 것이 아니라, 튜닝 이전에는 어떤 계획을 가지고 설계된 쿼리이고, 이것이 어떻게 작용하여 어떤 성능을 보여주는지 설명한다. 막연한 목표보다 뚜렷한 목표를 제시하고 있고, 그 결과를 볼 수 있다는 점이 매력적이다.

 

 

 

바라는 점

아쉬운 점을 이야기할 부분은 따로 없고, 뭔가 좀 더 있었으면 하는 부분이라면 연습문제 형식으로 튜닝 실습을 할 수 있게끔 하면, 반복 학습하고 복기하는 차원에서 좀 더 좋지 않았을까 싶다.

 

 

 

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

 



SQL_Tuning.JPG

 

 
안녕하세요 괴짜 개발자 namedboy 입니다. 
 
여러분은 SQL을 어떻게 공부하셨나요?
보통은 SQL 문법책을 사서 하거나 블로그나 인터넷에서 내용을 찾아서 공부하는게 전부 일 것 같습니다.
저도 SQL을 어떻게 배워야 하냐라는 질문을 꽤 여러번 받았던 기억이 납니다.
"그 때마다 항상 기본 SQL을 일단 익혀라. 하나씩 하다 보면 SQL을 다룰 수 있게 된다." 등의 조언을 했었습니다.
책을 꽤 많이 보는 제가 책을 추천하지 않은 이유는 추천할만한 책이 없기 때문입니다.
보통 SQL을 익히기 위해 책을 찾다 보면 너무 어렵거나 이해할 수 있도록 가르쳐 주는 경우가 별로 없었던 것 같습니다.
또 그 분들의 대다수는 기본 CRUD는 할 줄 알고 있는 경우가 많아서 DB의 내용을 좀 더 심도 있게 다루는 책을 찾기는 참 힘들었습니다.
 
그러는 의미에서 지금 제가 리뷰하려는 책은 기본적인 CRUD는 알고 있으면서 DB의 이해도를 높이고 싶은 분들에게 가장 적합한 책이 아닐까 싶습니다.
 
보통 엄청나게 두꺼운 책에서나 다루는 MySQL의 내부에서 데이터를 처리하는 방법이나 인덱스 키의 활용 방법 같은 내용을 이해할 수 있을 정도로 설명되어 있어 데이터베이스를 좀 더 이해하고 싶은 분들에게 도움이 될 수 있는 책이라 생각합니다.
 
보통은 데이터베이스의 쿼리가 느리거나 문제가 있는 쿼리문을 분석하거나 해결하기 위해 필요한 것이 무엇인지를 알기 힘듭니다.
인덱스의 문제인지 데이터의 구조적인 문제인지 파악하지 못한 채로 이것 저것 시도 하다가 실패하고 해결은 못하기도 하지요.
 
이 책에서는 그런 부분을 쿼리 튜닝이라는 챕터에서 충분히 잡아주고 있습니다.
물론, 아무래도 데이터베이스 구조적인 부분에 대한 내용이 많기 때문에 잘 모르시는 분은 앞에서 설명한 데이터베이스의 구조에 대해 충분히 이해하고 시작하시는게 좋을 것 같다는 생각도 들었습니다.
 
그래도 SQL을 배우기 위해 여러가지 시도를 해볼텐데 SQL 튜닝에 대해 입문하고자 하시는 분들에게는 많은 도움이 될 수 있을 것 같습니다.
이 책은 나는 리뷰어다 활동을 하면서 제공받아 작성된 서평이지만 그 동안 MySQL/MariaDB의 구조에 대해 가볍게 배울 수 있는 책이 나온 것 같아 속이 시원합니다. 드디어 추천할 만한 SQL 책이 생겼네요.
 
SQL 튜닝에 대해 궁금하신 분들은 [링크] 를 확인해보시기 바랍니다.

SQL 쿼리도 컴퓨터 언어이다 보니까 매번 비슷한 말을 하게 되는 것처럼 거~의 비슷한 함수들과 비슷한 형태로 쿼리문을 작성하게 된다.

상황에 맞는 함수를 알거나 다른 형태로 쿼리문을 작성하면 간단해질 수 있는 것을 팔만대장경 급으로 길고 쿼리를 작성한 나조차도 가끔 못알아볼 수준으로 짜게 될때가 있었다.

장황하게 쿼리를 작성해도 결과가 잘 나오면 문제가 없는데 꼭 이렇게 질질 길어진 쿼리에서는 하나둘씩 오류가 생기더라.

그럴때마다 구글하고 사이좋게.. stackoverflow에 전적으로 의지하며.. 해결해왔었다.

해결 못하면 어쩔 수 없이 미로같은 내 쿼리속을 여행하는 수 밖에..

항상 기본에서 튜닝 단계로 넘어가는 그 과정이 어렵고 도움이 목말랐던 나는 그래서 이번달에 받게 될 책에 대해서 굉장한 기대가 있었다.

 

회사에서는 Hive를 사용하고 있긴 하지만 이번 기회에 MariaDB에 대해서도 맛보기도 할겸 신나있었다.

책에 있는 MariaDB에 대한 설명과 오라클의 비교를 보니 Hive와 문법적으로 큰 차이가 있진 않아보였고 Hive에서 실행하다가 오류가 나거나 문제가 생기면 그때가서 구글의 힘을 빌리면 되겠다라는 생각이 들었다.

그리고 MariaDB의 점유율이 Hive보다 높다는 점에서 내가 정말 좁은 식견을 가지고 있구나 라고 생각했다.

주변에서 거의 Hive만 사용하고 나도 Hive를 사용하고 있다보니 자연스럽게 다른 DB에 대해서 알고자 노력하지도 않았다.

또 갑작스럽게 느끼는 건데.. 컴퓨터 언어와 프로그램들이 정말 많이 다양해지고 있다는 걸 새삼스럽지만 다시한번 깨달았다.

당장은 회사에서 쓰는 툴을 사용할 수 밖에 없지만 기회가 될때마다 책을 통해서나 유튜브를 통해서나 끊임없이 도전해야겠다고 다짐했다.

도태되지말자.

최근에 다른 팀에 제공할 Dashboard를 작성하기 위해 테이블을 짜면서 정말 다양한 우여곡절을 겪었다.

left outer join만 있다면 그 어떤 테이블이라도 쉽게 가져다 붙일 수 있을거라고 생각했는데, 역시나 자만이었다.

이론과 상상만으로는 역시 현실의 문제를 커버할 수 없었다.

회사 데이터라서 자세한 설명은 어렵지만(..) 가볍게 이야기 해보자면 개체에 맞는 각각의 테이블을 특정 값에 대해 join하고 그 안에서 또 집계를 해야하는 상황이었다.

문제는 개체의 수가 엄청나게 많았고 테이블의 특정 값에 대해 join을 하는게 난해한 상황이었다.

한참을 고민하다가 UNION ALL로 여러개의 쿼리문을 처리했다.

다른 방법도 있는지 궁금하기도 했고 UNION과 UNION ALL의 차이에 대해서도 긴가민가 했었는데 이 책에서 마침 그부분에 대해 설명하고 있었다.

UNION ALL은 select문을 실행하는 결과를 단순히 밑으로 붙이는 것이고 UNION은 select문 실행 결과를 밑으로 붙인 다음 중복 데이터를 제거하는 작업까지 포함한다고 한다.

따라서 중복 데이터 제거 작업이 필요없는 나와같은 상황에서는 UNION ALL이 맞다.

어쩌다보니 제대로 작업했다고 확인받은 기분이라 칭찬받은 것 같기도 했다.

그 외에도 방심하면 쉽게 만들어 낼 법한 나쁜 쿼리문에 대해서도 지적하고 있었다.

한번 싹 훑으면서도 에이 설마 내가 이렇게 했을까 싶긴 한데 월요일에 출근하자마자 쿼리나 뜯어봐야겠다.

두근두근 떨린다^ ^;;

간만에 칭찬도 받고 새로운 숙제도 받은 기분이라 즐거운 시간을 보냈다.

 

기존에 SQL을 많이 사용하는데 점점 심화된 기술을 사용해야하거나 효율적인 쿼리문을 짜야하는 상황이라면 한번쯤은 읽어보는 것을 추천한다.

실제 백엔드 개발을 하면서 빠질수 없기도하고 나도 지금 많이 쓰는게 SQL문이다.

요즘에는 nosql이라고 쿼리문이 없는 방식을 많이 쓴다고는 하지만 아직도 RDB를 쓰는곳이 많다.

같은 결과를 출력하는 SQL문이라도 어떻게 작성하였는지에 따라 속도 차이가 나고 느린 SQL문을

작성하게 되면 엄청난 양의 데이터를 처리하는 실무에서는 속도이슈가 무조건 나기 마련이다.

이 책에서는 mysql, mariadb 환경에서의 쿼리튜닝, 프로파일링 그리고 기초가 부족한 독자를 위해

mysql과 mariadb의 개요에 대해서도 설명해준다.

이 책을 통해 sql 실력이 한층 더 성장하게 되었던 것 같고 도움이 많이 되었던 책이다.

SQL(Structured Query Language)
그대로 번역하면 '구조화된 질의 언어'라고 할 수 있다.
오히려 한글보다 원어가 더 친숙하고 이해가 편하다.
개발자라면 빈도의 차이일뿐, 대부분 접하는 것이기도 하다.
DBA와 같이 전문적으로 다루는 사람도 있지만, 개발 조직이 크지 않으면 별도의 DBA가 존재하지 않는다.
 
쿼리는 누구나 작성할 수 있다.
하지만 '제대로' 된 쿼리는 아무나 작성하지 못한다.
서비스 초기에는 데이터가 없기에 인덱스가 없어도 불편함이 없다.
관계 또한 설정하지 않는다.
데이터가 쌓이면서 이런 문제점들로 인해 점점 데이터 처리 속도가 느려지고, 서비스는 엉망이 되어 간다.
이는 소설이 아니라, 우리 주변에서 종종 보는 논픽션이다.
 
 

sql.jpg

 

 
이 책은 이런 더 이상 이런 픽션을 방지하기 위한 좋은 가이드북이다.
SQL 튜닝에 대한 책은 여러 권 있다.
대부분 표준SQL이나 오라클을 다루고 있다.
오라클과 같은 상용제품을 쓰는 곳에는 대부분 DBA가 존재한다.
실제로 튜닝을 필요로 하는 스타트업이나 중소기업들에서는 mysql, mariaDB를 많이 사용한다.
이런 실무자들의 튜닝에 대한 갈증을 '제대로' 풀어줄 책이 없었을 뿐이다.
이 책은 바로 mysql, mariaDB에 대한 튜닝을 다루고 있다.
 
단지 '결과'를 내기 위한 쿼리가 아니라, '빠르고 정확한 결과'를 내기 위한 방법을 알려주고 있다.
책을 보면서 DB를 직접 다루고 있음에도 성능에 대해 많은 고민을 하지 않았던 것이 부끄러웠다.
join을 하고, 정규화를 하고, 인덱스를 만들었지만 지금까지의 경험에 기반한 것이였다.
이 책을 보면서 지금까지 DB에 대해 얼마나 무지했는지 깨닫게 되었다.
 
실제 데이터를 가지고 좋은 쿼리와 나쁜 쿼리를 보여주어 그 차이를 직접 느낄 수 있다.
300페이지가 안되는 얇은(?) 책이지만, 그 안에 담긴 내용은 SQL 튜닝에 대해 자신감을 느낄 수 있을 정도이다.
이 책을 보면 배운 것들로 그동안 내가 저지른 무지한 만행들을 수습할 생각을 하니 벌써 뿌듯하다.
 
  • 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

이 책은 DB 튜닝 입문 책으로 

SELECT, INSERT 위주의 기본 CRUD만 주로 다뤄왔던 개발자가 

DB에 대한 레벨을 한 층 올리기에 좋을 것으로 판단된다.

 

본인이 개발자 면접에 참여하면

면접저가 DB를 활용하여 열심히 프로젝트를 진행했지만

의외로 기본적인 DB 용어를 모르거나 이론적인 지식이 얕은 경우가 종종 있다.

 

이 책에서는 튜닝 용어 및 중요성, 실행계획, 악성튜닝과 해결 방안 등을 설명한다.

직관적인 그림과 쉬운 예제를 통해 설명하고자 하였다.

 

오라클과 비교하며 명령어, 구조, 조인 방법 그리고

자주 사용하는 함수를 예시와 함께 설명하였다.

 

이미 시니어지만 본인도 이 책을 다시 보면서

기초 정의 및 내용을 재정립할 수 있어서 좋은 기회였다.

 

이 책은 주니어 개발자 2~3년차 또는

튜닝에 관심을 가지려는 개발자에게 추천한다!

 

 

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

업무에 바로 쓰는 SQL 튜닝

- MySQL, MariaDB를 이용한 쿼리 작성 및 튜닝 -

이미지 1.png

 

안녕하세요. 율리시스SS입니다.

오늘 소개시켜드릴 도서는 '업무에 바로 쓰는 SQL 튜닝' : 최적의 성능을 위한 MySQL/MariaDB 쿼리 작성과 튜닝 실습 입니다.

프로그래머라면 한번쯤은 쿼리를 작성해 보신적은 있으실것 같습니다. 백앤드라면 더더욱 많이 작성해 보았을 텐데요.

 

쿼리는 다양한 상황을 접하면서 작성해 봐야 실력이 많이는다는 것을 알게 되었습니다. 수많은 테이블을 조인하고 수십만개 혹은 수백만개의 데이터중에 몇개를 뽑아내는 기분이란... 그리고 이런 수많은 데이터 중에서 속도도 매우 중요한데 이러한 다양한 문제에서 최적의 성능을 위한 쿼리 작성과 튜닝 실습을 배울 수 있는

도서 입니다.

 

◐ 업무에 바로 쓰는 SQL 튜닝

최적의 성능을 위한 MySQL/MariaDB 쿼리 작성과 튜닝 실습

이미지 2.png

 

| 업무에 바로 쓰는 SQL 튜닝 도서입니다.

대상 독자로는 MySQL이나 MariaDB에 SQL 튜닝을 시작하는 분들이라고 하는데요.

해당 도서는 쉽게 이해할 수 있도록 직관적인 그림이 다수 있습니다. 전체적으로 그림으로 흐름을 따라가는 방향으로 자필되어 있어서 좋았습니다.

MySQL과 MariaDB의 차이점 부터 설명해주는데 해당 도서의 난이도는 초중급~중급정도라고 생각됩니다.

 

 

 

이미지 3.png

 

| 보통 오라클 기준의 SQL문을 사용하여 쿼리를 작성하거나 튜닝하는 경우가 많은데 해당 책에서는 이번 기회에 MySQL, MariaDB의 특징과 함께 설명하고 있습니다.

대부분 공통된 설명이며 설정이 다를 경우 각각 따로 설명한다고 하여 너무 좋았습니다.

 

오라클과 MySQL/MariaDB의 차이점을 설명해 주며, 기본적인 처리 쿼리문도 설명해주었습니다. 프로세스를 도식적으로 그려 좀 더 이해하기 쉽게 설명한 부분도 포인트

입니다.

 

 

이미지 4.png

| MySQL 설치 전단계 에서는 차이점과 특징 그리고 기본적인 기능등을 설명해주고 있습니다.

 

튜닝의 필요성에대한 설명과 함께 튜닝을 하기 전과 후의 실행 시간도 알려주는데 이런 부분이 굉장히 신기했습니다. 튜닝이라는게 어렵기도 하지만 이런 방법으로도

실행시간을 줄일 수 있다는게 좋았습니다.

 

실습환경을 구축하는데 설치부터 시작을 합니다. 어떻게 보면 초보자를 위해 친절한 부분도 있을 수 있지만 생각보다 책두께에 비해 비중이 적지 않아서 아쉬웠습니다. 

 

 

이미지 5.png

| 실습은 MySQL Sample 데이터를 가지고 실습을 하게 되는데요.

일반적인, 튜닝 전 실행계획, 튜닝 전 SQL을 작성하며, 튜닝 후에 대한 소요시간과 데이터 접속 건수를 확인할 수 있습니다.

전체적인 챕터 대부분이 튜닝 전/후에 대한 실행 결과값을 보여주고 있어서 어떻게 튜닝을 해야 데이터를 더욱더 빠르게 처리하는지 알려주는 도서입니다.

 

 

이미지 6.png

 

| 해당 도서는 데이터를 조회할 때 생각보다 시간이 너무 오래걸리는데 어떻게 튜닝을 해야 할까 라는 생각을 한번이라도 해보신 분들께 추천드리는 도서입니다. 특히나 튜닝 전/후에 대한 결과를 알려주어서 너무 좋았다는 장점이 있습니다. 조인을 할 때 중복되는 데이터가 나올 때도 많고 실무에서 문제가 발생했던 적이 있는

케이스도 해당 도서에 나와서 조금 놀랐습니다.

SQL 쿼리문을 배우는게 아닌 일반적인 쿼리와 튜닝 후의 쿼리를 비교하기 때문에 좀 더 실행 속도를 올리고 싶은 분들께 추천드리는 도서입니다.

 

 

한빛미디어 <나는 리뷰어다> 활동을 위해 제공받아 작성하였지만

제공 측의 간섭 없이 필자가 느낀 점 그대로 작성하였습니다.

 

작성일 : 2021년 07월 16일

최종 수정일 : 2021년 07월 16일

* 오류 수정은 블로그에서만 합니다.

* 블로그 : http://blog.naver.com/adg0609

CopyRightⓒ.2021.율리시스SS.All Rights Reserved



B9354330938_l.jpg

 

 

이 책은 MySQL/MariaDB에 대한 튜닝 내용을 담고 있다.

 

우리나라는 DBMS로 오라클이 거의 점유하고 있으나 클라우드 환경으로의 전환에 따른 DBMS의 선택과 비용문제로 인해 솔루션 개발 업체인 경우는 MySQL이나 MariaDB를 쓰는 경우가 점차 증가하고 있는 것 같다.

 

이 책은 MySQL기준으로 설명하지만 내가 보기에는 ANSI-SQL을 기준으로 튜닝을 설명하기에 기본적인 악성SQL을 개선하는 방향은 어떤 DBMS를 사용하느냐는 상관이 없다. 다만 몇가지 MySQL이나 MariaDB에서만의 특징만 잘 기억하면 된다.

 

이 책은 체계적으로 점진적인 방향성을 가지고 튜닝을 이어 간다.

 

처음에는 MySQL과 MariaDB의 특징에 대한 설명을 해 준다. 이 내용은 이 후 SQL 튜닝 용어 설명으로 이어지고 튜닝 실행 계획에서 좀 더 자세하게 얘기하게 된다.

KakaoTalk_20210718_193207194.jpg

KakaoTalk_20210718_193206953.jpg

기본적인 내용을 모두 설명한 후 실제 예제를 통해 악성 SQL을 개선된 SQL로 튜닝하는 과정을 설명한다.

실제 현업에서 나올 수 잇는 악성SQL을 악성인 이유와 악성일 때의 플랜정보를 설명하고 왜 개선해야 하는지와 개선된 플랜을 비교 설명해 준다.

KakaoTalk_20210718_193206695.jpg

한 예로 파티션테이블에 대한 기본 설명을 하고 뒤 장에서 파티션테이블이 필요한 대량의 데이터의 경우, 어떻게 악성 플랜이 나오는지 파티션 테이블로의 개선 후 어떻게 플랜이 바뀌는지를 보여주어 이해가 잘되도록 설명해 준다.

 

이 책에서 튜닝된 SQL은 현업에서 많이 발생하는 튜닝 대상인게 맞는거 같다. 20여년 개발하면서 이련 유형의 튜닝을 나도 수없이 해왔기 때문이다.

 

업무에 바로 쓰기 위해서는 많은 케이스를 경험하고 직접해봐야 하지만 이 책을 기본으로 시작하는 것은 좋은 선택이 될 수 있을 거 같다.

 

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

 

업무에 바로 쓰는 SQL 튜닝 리뷰 


마침 현업에서 SQL을 사용할 예정이라 해당 책을 선정하였습니다. 


1장부터 천천히 읽으면서 느낀 점은 "친절하다" 입니다. sql 프로그램 설치 과정부터 이해하기 쉬운 예제, 이해를 돕는 그림/삽화 그리고 SQL 튜닝 전/후 상황 비교까지 저자의 "친절함"을 볼 수 있었습니다.

 

1장, 3장은 database에 대한 개요 및 설치/환경설정

2장은 sql 기본 (외부조인, 인덱스, 엑세스 등) 개념 

4장은 sql 튜닝 따라하기 

5장에서는 sql 튜닝을 조금 더 디테일하게 하는 방법을 배웁니다.

예제가 현황분석(sql 튜닝 전/후), 튜닝 수행(중간 결과), 튜닝 결과(sql 튜닝 전/후)로 구성되어있기 때문에 이해에 도움이 됩니다. (아래 사진)

 



SQL 관련 자격증을 따는데에는 추천드리고 싶지는 않고,

Database 수업을 들었지만, sql 튜닝에 대해서 공부하고 싶으신 분에게 추천드리고 싶습니다. 

 

<이 리뷰는 한빛미디어 '나는 리뷰어다'로 부터 책을 지원 받아 작성되었습니다>

 

 

 



[주요 내용]

- SQL튜닝 용어 직관적으로 이해하기

- SQL 튜닝의 실행계획 파헤치기

- SQL문 단순 수정/재작성

- 인덱스 조정/테이블 조인 설정 변경

- 적합한 테이블 및 열 속성 설정


[대상독자]

- MySQL나 MariaDB에서 SQL튜닝을 시작하려는 독자

- SQL의 기초 입문자


[서평]

이 책의 구성


1장_ MySQL과 MariaDB 개요

MySQL과 MariaDB의 배경과 시장점유율 현황을 알아보고 상용 DBMS와의 차이점, 오픈소스 DBMS인 MySQL과 MariaDB 튜닝의 중요성을 살펴봅니다.

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


SQL 튜닝을 수행하기 전에 알아야 하는 물리 엔진의 구조, DB 오브젝트 관련 용어, 논리적인 쿼리문 작성 관련 용어, 개념적으로 통용되는 튜닝 용어를 알아봅니다.

3장_ SQL 튜닝의 실행 계획 파헤치기


SQL 튜닝을 수행하는 데 필요한 실습 환경을 구성해봅니다. 튜닝의 방향성을 결정하기 위해 실행 계획을 수행하는 방법과 출력 결과의 의미를 살펴보고, 물리적인 시간 단위 정보인 프로파일링을 이해합니다.


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


주어진 SQL 문에서 단순한 텍스트 변경으로 튜닝을 수행하는 실습을 진행합니다. SQL 문에서 일부 구문 또는 테이블 조인 방식을 변경하여 쿼리 튜닝을 수행하는 사례를 확인해봅니다.


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


주어진 SQL 문에서 쿼리를 재작성하거나 DDL data definition language 을 통한 오브젝트 변경으로 튜닝을 수행하는 실습을 진행합니다. SQL 문을 전체적으로 다시 작성하거나, 인덱스를 조정하고, 테이블과 열의 속성을 변경하는 방식으로 쿼리 튜닝을 수행하는 사례를 확인해봅니다.


이책은 SQL 튜닝에 필요한 기초 원리와 여러 가지 예제로 튜닝 기법을 쉽게 배울수 있습니다. 쿼리를 작성 하는건 그리 어렵지 않지만 쿼리의 성능을 최대한으로 끌어 올리는 튜닝은 쉽지 않습니다. 하지만 이책에서는 DBA의 영역이라고만 생각하는 튜닝을 세계를 개발자들에게 혹은 초급 SQL러들에게 기초 SQL 지식만 있다면 튜닝을 쉽게 시작 할수 있게 그림과 많은 예제들로 이해를 돕고 있습니다. 실제 업무에서 발생할 수있는 예제들로 SQL문을 분석하고 튜닝을 직접 실습하면서 그 원리를 배워 갈수 있는 교재로 좋습니다.

 

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

<이 리뷰는 한빛미디어 '나는 리뷰어다'로 부터 책을 지원 받아 작성되었습니다>

 

 

책소개


SQL 튜닝의 기본 원리와 사례로 배우는 상황별 튜닝 방법 

 

SQL 튜닝은 수많은 데이터를 더 빠르고 강력하게 처리하도록 해주는 가장 중요한 기술이다. 하지만 쉽지 않은 내용 때문에 부담감을 갖고 시작조차 못하는 개발자도 많다. 이 책은 SQL의 기초 지식만 있다면 튜닝까지 쉽게 이해할 수 있도록 직관적인 그림과 예제로 구성되어 있다. 또한 실제 업무에서 발생할 수 있는 악성 사례를 통해 SQL 문을 분석하고 튜닝하는 과정을 직접 실습해본다. 

SQL 문을 작성해본 경험이 적은 독자라도 걱정할 필요는 없다. 이제 막 입사한 데이터베이스 개발자라도 이 책으로 ‘착한 쿼리’를 만들어보면서 실무에 바로 적용할 수 있다!

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B9354330938 

 

업무에 바로 쓰는 SQL 튜닝

SQL 튜닝의 기본 원리와 사례를 기반으로 상황별 튜닝 방법을 알려주는 도서

www.hanbit.co.kr

 

리뷰


책을 읽으면서 이렇게 자세하고 쉽게 설명해주는 책을 만난건 오랜만이었습니다. SQL에서 어려운 개념들, JOIN이라던지 INDEX라던지 등에 대한 개념과 용어를 그림과 함께 쉽게 풀어서 설명하고 있는 책 입니다. 책을 보면서 알고 있는 개념이 맞는지 확인해볼 수 있는 계기가 되었고 SQL을 튜닝하여 어떻게 성능을 높일 것인지를 고민하게 해준 책입니다.

첫 장에서는 MySQL과 오라클의 차이에 대한 내용을 다루고 있습니다. SWOT 분석을 통해 MySQL과 MariaDB를 분석하는 부분도 확인 할 수 있었습니다.

책을 보다보면 SQL 성능 뿐 아니라 기본 개념에 대한 내용들도 쉽게 설명해주고 있습니다. 저처럼 SQL에 내부 구조에 대해 자세히 고민해보지 않은 분들께는 많은 도움을 주는 부분이 아닐까 생각해봅니다.

또 한가지 이 책의 장점은 결과 값이나 내용들을 모두 표시해주고 있어서 직접 SQL문을 실행하지 못하는 환경에서 책만으로도 공부를 할 수 있다는 점입니다. 책들중 다수는 실습예제를 실행하지 않고는 이해하기 어려운 부분이 있지만 이 책은 SQL문을 실행한 결과, 설정, 소요시간 등을 예제마다 표기해주고 튜닝 후 어떻게 달라지는까지 표시해주다보니 SQL문을 실행할 수 없는 환경에서도 공부를 할 수 있는 점이 굉장히 마음에 들었습니다.

 

본격적인 튜닝은 4-5장에서 진행됩니다. 4장은 초보자를 탈출하기! 5장은 전문가가 되기 입니다. 4-5장에서는 SQL 성능을 어떻게 향상 시킬 것인지에 대해서 악성 SQL 예제를 통해 성능을 개선하는 작업들을 진행합니다. 책을 보니 제가 지금까지 작성 했던 SQL문 중 다수를 튜닝해야겠다는 생각이 들었습니다. 시간이 날때 SQL문을 하나하나 튜닝하는 연습을 해봐야 겠습니다.

튜닝 전에는 Extra에 Using filesort만 존재하지만 튜닝 후에는 인라인 뷰로 스토리지 엔진에서 가져온 임시 테이블에 상주시켜 정렬하는 작업을 수행하도록 튜닝이 진행하게 됩니다. 그래서 튜닝 후에는 Using where; Using index / Using index를 사용하는 구조로 변경되게 됩니다. 

 

이처럼 많은 예제를 통해 SQL 성능 튜닝을 쉽고 빠르게 배울 수 있는 책입니다. 책을 읽은 후에 학습을 위해 기존에 작성 했던 SQL문을 튜닝해보시는것도 내용을 익히는데 많은 도움이 될 것 같습니다.


MySQL 계열의 DB 엔진도 설명해주고, SQL 튜닝을 차근차근 따라갈 수 있도록 예제와 실습할 수 있는 DB까지 제공주어서, 초보자도 쉽게 따라갈 수 있습니다!

한빛미디어에서 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로 즐거운 여행하시기를 바랍니다 :) 

 


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

 

 

"이 책은 MySql/MariaDB를 사용하는 분들에게 도움이 되는 지침서입니다."

 

- 이 책은 무료 데이터베이스인 MySql 또는 MariaDB를 사용하는 분들에게 도움이 되는 지침서입니다.

 

1. 현재 사용하고 있는 SQL 문을 검토해 볼 수 있습니다.

  • 기본키(Primary Key) 를 사용할 수 있는 쿼리문이지만 조건(Where) 절의 잘못된 구문으로 인하여 Full Scan 하는 경우의 잘못된 예제를 확인하고 이것을 튜닝하는 방법에 대해 다룹니다.
  • 형변환이나 사용하지 않는 함수를 포함하므로 인해 인덱스를 사용할 수 있는 쿼리문이지만 조건절의 잘못된 구문으로 인하여 Full Scan 하는 경우의 잚소된 예제와 튜닝하는 방법에 대해 다룹니다.
  • 열을 결합하는 경우에도 Full Scan 이 되는 것을 확인하고 이것을 Union 으로 튜닝하는 방법에 대해서도 다루고 있습니다.
  • 테이블을 Join 하여 중복을 제거하는 문장(Distinct)에서도 좀 더 좋은 쿼리문을 만들 수 있는지에 대한 문제에 대해 다루고 있습니다.
  • 다수 쿼리를 Union 연산자로만 합치는 경우에도 메모리에 생성된 테이블을 이용하는 경우 좀 더 빠른 속도가 향상이 되는데 이러한 메모리를 활용할 수 있는 방법에 대해서 다루고 있습니다.
  • 인덱스를 활용할 수 있는 SQL 임에도 Group by 절의 순서에 따라서 인덱스를 활용하지 않는 경우도 다루고 있습니다.
  • 엉뚱한 인덱스를 사용하는 나쁜 SQL 인 경우 수정할 수 있는 방법에 대해 다루고 있습니다.
  • 테이블 조인 순서, 혹은 메인테이블에 종속적인 쿼리문등 다양한 경우에 대해 튜닝하는 방법을 알아 봅니다.

 

2. 악성 SQL 튜닝 방법에 대해 알아 볼 수 있습니다.

  • 테이블 조인시에 모든 데이터를 가져 오는 경우 치명적일 수 있는데 이러한 SQL 구문을 개선하는 방법에 대해서 알아 봅니다.
  • 대량의 데이터를 가져와 조인하는 쿼리문을 살펴 보고 개선 할 수 있는 방법에 대해서 살펴 봅니다.
  • 인덱스 없이 조회 하는 경우 인덱스 생성만으로도 성능을 향상 시킬수 있는데 이러한 부분에 대해서도 살펴 봅니다.
  • 인덱스 열의 속성값을 대소문자를 구분하는 속성, 또는 대소문자를 구분하지 않는 속성값을 적절히 활용하여 쿼리문을 변경함으로 성능개선 할 수 있는 방법에 대해서 살펴 봅니다.

 

 

이 책을 읽으면서

10년이 넘는 실무를 수행하면서 대용량 데이터 베이스를 다룰때 속도 개선에 대해 고민을 많이 해 보았는데 인터넷 검색을 통해서 부분적인 부분들에 대해서만 고민을 했었던것 같네요.

이 책을 읽으면서 SQL 튜닝에 대해 다양한 방법등을 살펴 보면서 이런 부분들은 고려하지 못했었는데 이런 부분도 있었다는 것을 깨닫게 되는 부분이 많았습니다.

특히나 Group By 절의 순서만 바뀌었을 뿐인데 인덱스를 활용하거나 활용하지 않거나 하는 부분의 내용을 읽을때는 예전에 만들었던 쿼리 문도 과연 이랬던 것은 아닐까 라는 생각을 갖게 되면서 얼굴이 화끈거리는 경우도 있었네요~

실무에서 손을 떼었지만 이 책을 읽으면서 예전에 이 책을 만났더라면 데이터베이스 영역 때문에 고민 했던 부분들을 많이 덜어 주지 않았을까 라는 생각을 해 보게 되었네요.

 

이 책을 읽으면 도움이 되실 분
  1. MySql/MariaDB 를 사용하시는 분이 쿼리를 튜닝하고 싶은 분들에게는 필독서
  2. 어플리케이션을 만들고 계신분들도 한번 읽어 보면 쿼리문의 순간 실수로 인덱스를 활용하는지 안하는지 등을 고민해 볼 수 있을것 같네요.
  3. 대학생이 데이터베이스 과목을 수강하고 있다고 하면 이 책을 이용해서 쿼리문을 직접 실습해 보면서 인덱스의 개념과 기본키의 개념  및 데이터 베이스의 큰 그림을 그려 볼 수 있을것 같네요.

 

 

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

 

 

20210708_222721.jpg

 

20210708_222756.jpg

 

 

이 책은SQL을 이제 막 시작했거나, 아직 효율적인 SQL문 작성에 자신이 없는 초중급 개발자를 위한 실전 DB 튜닝(성능 최적화) 서적입니다.

 

실습 DBMS는 요즘 많이 사용하고 있는 오픈소스 DB인 MySQL 8.0MariaDB 10.5 최신 버전을 기준으로 설명하고 있습니다.

 

실제 튜닝실습 편에 소개된 악성 SQL 튜닝법은 SQL 문법이 중요한것이 아니라 문제를 발견하고 그 해결 방법을 패턴화하여 실무에 언제든지 적용할 수 있도록 학습하는 것이기 때문에 MS-SQL이나 Oracle 사용자에게도 유용할 것입니다.

 

참고로 저는 Linux 환경에 MariaDB 10.4를 설치해서 책의 예제를 실행했습니다.

 

 

20210708_223406.jpg

 

 

책의 주제는 크게 3가지인데 DBMS 개요, 튜닝 기본용어 및 실행계획 기초 그리고 악성 SQL 튜닝 등으로분류할 수 있습니다.

 

우선 성능 최적화를 다루기에 앞서 1~2장에서는 MySQLMariaDB에 대한 기초 지식을 배웁니다.

 

2장에선 이 책에 소개된 튜닝 전과정을 이해하려면 다양한 튜닝 용어를 먼저 알아야 하기 때문에 DB 오브젝트용어, SQL 용어, Join 알고리즘 용어 등을 상세히 학습합니다. 중급 개발자 경우 subquery 종류와 join 알고리즘 등을 한번 더 머리속에 정리하는 시간을 가질 수 있는 기회입니다.

 

3장에선 실습 환경 구축을 위해 Windows에서 MySQL과 MariaDB를 설치합니다. 그리고 튜닝 작업에서 중요한 SQL 실행 계획을 확인하는 EXPLAIN, DESC 등의 키워드에 대해 배웁니다.

 

MySQL과 MariaDB에서 각각 지원하는 키워드를 비교할 수 있으며, 실행계획 분석을 위한 id, select_type, key 등의 구성요소에 대해서 학습합니다.

 

4장에서는 실습 DB(부서, 직원 등)의 테이블을 상세히 분석합니다. 이후의 모든 실습에 사용되는 테이블이므로 스키마, 제약조건, 인덱스 등이 상세히 설명되어 있습니다.

 

4장부터는 SQL문의 난이도를 점점 높이면서 과제를 설명하고, 잘못된 SQL을 먼저 제시한 후에 실행계획 결과 등을 분석하여 더 나는 SQL문을 작성하는 방법을 제시해 줍니다.

 

사실 4장의 초반은 기본키를 변형하는 SQL문이나 사용하지 않는 함수를 포함하는 SQL문 등 실무에서 정말 개발자들이 실수를 많이 하는 SQL문을 위주로 설명이 되어 있습니다.

 

5장은 좀더 복잡한 쿼리를 두고 인덱스를 직접 수정하거나 테이블 구조 등을 변경하여 SQL문을 재작성하는 튜닝방법에 대해 학습합니다.

 

여기까지 서적의 핵심 내용만을 간추려 정리했습니다.

 

다른 SQL 튜닝 서적과 다르게 SQL 기초 지식만으로도 효율적인 SQL문을 작성할 수 있는 방법을 알려줘서 SQL 개발자에게 큰 도움이될 것으로 기대됩니다.

 

그리고 SQL 튜닝 서적이 대부분 Oracle 위주로 되어 있는데, 누구나 쉽게 설치하고 접근하기 쉬운 오픈소스 DBMS로 설명이 되어있는 것도 이 책의 장점입니다.

 

이 서평은"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성하였습니다.

 

#업무에바로쓰는SQL튜닝

#MySQL

#MariaDB

#SQL성능최적화

#양바른

#한빛미디어

 

MySQL, MariaDB를 사용하면서 SQL 성능을 고려하지 않고 개발하던 개발자나 SQL 성능 개선에 대해 어설프게 알고 있던 개발자라면

 

이 책을 반드시 한번 보라고 권하고 싶다

 

그만큼 매우 중요한 SQL 튜닝에 대한 핵심적인 내용만을 잘 담아낸 책이다

 

오래 간만에 정말 유용하고 좋은 정보를 전달해준 책을 읽게 되어 매우 기분이 좋아졌다

 

개인적으로는 이 책에서 다루지 못한 좀더 고급 SQL 튜닝 내용으로 2탄이 나왔으면 하는 바램이다

 

아주 어려운 통계 쿼리나 배치 쿼리를 튜닝하는 내용으로 나왔으면 하는 바램이다

 

20210704_171140.jpeg

 

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

 

 

오늘 리뷰할 책은 한빛미디어의 신작 '업무에 바로 쓰는 SQL 튜닝'입니다.

개발자로서 SQL을 아는 것은 기본 중의 기본인데, 데이터가 많아지고 테이블이 복잡해질 수록 SQL 쿼리를 효율적으로 잘 짜는게 매우 중요한데요.

그래서 이 책을 읽게 되었습니다.

 

 

개인적으로 SQLD(SQL 개발자) 시험을 보느라 인덱스나 SQL 작동 원리 등은 살짝 배웠는데요.

그런 개념들도 알려주고, 개념들을 이용해 효율적인 SQL 쿼리를 짜는 법을 알려줘 참 좋았습니다.

 

 

SQL쿼리 자체를 수정,

인덱스를 수정,

테이블 및 열 구조를 변경해 

착한 쿼리를 만드는 방법도 나와있습니다.

 

 

예시로 나와있는 쿼리도 명확하고 간단해 이해하기 참 쉽습니다.

개인적으로 반복해 읽어 제거로 만들고 싶은 내용이 그득하네요!

 

 

 

이번 7월에는 SQL에 대한 내용을 담은 업무에서 바로 쓸 수 있는 SQL 튜닝 책을 받았습니다.

 

20210701_215048.jpg

 

 

20210701_215058.jpg

 

 


책을 통하여 SQL에 대한 대략적인 개념을 배울 수 있었고, 그리고 데이터베이스에 꼭 필요한 실용적인 내용만 배울 수 있어서 도움이 되었습니다.

20210701_215105.jpg

 

 

 

 

마지막으로 좋은 책 제공과 기회를 주신 한빛미디어 담당자 분들께 감사 드립니다. 8월에도 내용이 탄탄한 도서를 읽고 빨리 리뷰를 남기고 싶습니다.

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

 

 

# 나는리뷰어다



결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
업무에 바로 쓰는 SQL 튜닝
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
업무에 바로 쓰는 SQL 튜닝
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
업무에 바로 쓰는 SQL 튜닝
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실