주제
MySQL 계열에서 쿼리 튜닝을 수행해야 할 때 알아야 하는 용어들과 메커니즘을 소개한다. 실전에서 발생하는 가벼운 쿼리들과 약간은 복잡한 쿼리들을 활용하여 실제 튜닝 수행 과정을 다룬다.
대상
- MySQL, MariaDB에서 SQL 튜닝 시작하려는 사람, 튜닝 입문서
- DBMS 종류 상관없이 SQL 기초 지식만 있다면 이해할 수도록 설명
- SQL 문 작성 경험이 적더라도 튜닝의 기초 학습
생각
좋은 SQL 문 작성하는 것은 중요하다. 비즈니스 로직이 모두 포함된 한 방 쿼리를 작성하더라도, ORM에서 쿼리 매핑을 자동 생성하더라도, 데이터 분석을 위해 쿼리를 작성해도, 작성한 쿼리가 좋은지 나쁜지 분별해야 한다. 왜냐하면 성능에 직접적인 영향을 끼치기 때문이다.
책의 장단점은 아래와 같다.
- 책이 얇아 심리적 부담이 적다. (총 296 쪽)
- 내용이 연결되어 있어, 나와 같이 튜닝이 처음인 경우 앞 장부터 순서대로 읽기 좋다.
- 튜닝을 알기 위한 DB의 기본적인 지식을 배울 수 있다. 단, 기본적인 SQL 문은(SQL 기초 문법, 조인, 서브쿼리 등) 작성은 알고 있어야 이해가 쉽다.
- 튜닝의 실제 사례를 살펴보며 튜닝이 이런것이다를 알 수 있다. (예제가 공개되어 있다)
- 기초를 다루다 보니 해당 기술의 자세한 내용이 담겨 있지 않다.
- 좀 더 깊은 내용이 필요할 때 책 'Real MySQL 8.0'을 참고용으로 함께 읽으니 도움이 되었다. (Real MySQL을 처음부터 읽기엔 어려웠는데 이 책을 통해 기초적인 내용을 배울 수 있었다.)
구성
1장 : MySQL과 MariaDB 개요
MySQL, MariaDB 특징을 살펴 볼 수 있다. (배경, 시장점유, 상용 DBMS와의 차이점)
2장 : SQL 튜닝 용어를 직관적으로 이해하기
SQL 튜닝 전 알아야하는 개념을 배운다.
짧고 굵게 요약되어있다. 기초적인 DB 지식(SQL 기초) 외 MySQL 엔진 아키텍처와 서브쿼리, 조인, 조인 알고리즘, 디스크 접근 방식 등 배울 수 있다. 한 용어에 짧게는 0.5page ~ 2page로 설명한다. 자세한 설명은 다른 책이나 자료를 참고하여 읽게 되었다.
개인 요약 : 2022.05.12 - [🏢 DB] - MySQL Server 아키텍처와 스레딩
3장 : SQL 튜닝의 실행 계획 파헤치기
SQL 문의 실행 계획의 결과를 해석할 수 있도록 실행 계획의 컬럼들을 설명한다. 결과 내용이 길 수 있지만 2장, 4장과 연결되어 있어 읽었다. 읽고 난 후 실행 계획 결과에 대한 걱정이 줄었다. 3장 앞에서 20 페이지 가량 MySQL 설치가 포함되어 아쉬웠다.
개인 요약 : 2022.05.14 - [🏢 DB] - MySQL 실행 계획과 결과 컬럼 설명 (MySQL EXPLAIN Output Format)
4장 : 악성 SQL 튜닝으로 초보자 탈출하기
SQL 문의 실행 계획을 분석하여 SQL 문을 단순 텍스트 변경을 통해 간단한 튜닝 예제를 살펴본다. (불필요한 함수 변경, 테이블 조인 방식 변경, 인덱스 사용...)
5장 : 악성 SQL 튜닝으로 전문가 되기
SQL 문의 실행 계획을 분석하여 쿼리를 아예 재작성하거나 DDL를 사용한 튜닝 예제를 살펴본다. (SQL 재작성, 인덱스 소정, 테이블과 열의 속성 변경한 쿼리 튜닝 등)
개인 요약 : 2022.05.19 - [🏢 DB] - 인덱스와 관련된 몇 가지 SQL 튜닝 예제 (결합 인덱스, 인덱스 사용할 때 느린 경우, 인덱스가 없는 경우 등)
⛓ Reference
공식 Github 저장소
https://github.com/7ieon/SQLtune
오탈자 보기
'📚 Books' 카테고리의 다른 글
책 '이펙티브 자바(Effective Java)' 소개와 요약정리📙 (2) | 2022.03.05 |
---|---|
책 '소프트웨어의 품격(Seriously Good Software)' 소개와 요약정리, 스터디 📕 (2) | 2022.01.08 |
책 '단위 테스트(Unit Test)' 소개와 요약정리 📗 (0) | 2022.01.04 |
책 '오브젝트(Object)' 소개 📓 (0) | 2021.11.23 |
책 '객체지향의 사실과 오해' 소개와 요약정리 📔 (0) | 2021.11.15 |
댓글