<업무에 바로 쓰는 SQL 튜닝> 후기

사실 DB를 이해하고 사용하는게 아니라, SQL을 알고 사용하고 있다.

마치 API문서만 보고 사용하는 느낌이랄까…

DB에 대한 얕은 지식으로 필요할때 MySQL 인덱스 정리 및 팁 같은 (좋은) 글들을 가끔 읽으며 여럼풋이 그림을 넓혀가고 있었는데…

마침 SQL 튜닝 관련 신간을 보게 되었고 바로 구매해버렸다.


결론부터 말하면 나와 같은 (주니어) 개발자라면 강추!

  • SQL을 사용하지만 그 외에는 잘 모르겠다.
  • SQL 튜닝이 뭐지?… 성능을 좋게하는건 이해하는데 어떻게? 에이 대충 LIKE문 피하면 되는거 아냐?
  • 음… index 알지! SELECTindex를 이용하면 빠르고 생성/삭제때 할일이 생기니 느려지고!!
  • 근데 그 이상 뭐가 있지???

읽고 난 후

  • DB에 여러 개념을 잡고 갈 수 있다.
  • 음 EXPAIN으로 SQL 실행 계획을 확인할 수 있다!
  • 조건절, 서브쿼리, 인덱스 현황 등을 고려해 SQL 튜닝 방향을 잡을 수 있구나
  • 음 난 이런거 잘 모르고 SQL문을 짯는데… 특히 ORM을 이용했는데… 이런?
  • 다른 DB 책도 사서 공부해보고 싶다


사실 얼마전에 DBA분께 쿼리에 대해 질문한적이 있었는데, 그게 이 책 구매에 큰 영향을 주지 않았을까 싶다

  1. 잘 모르면서 질문할려니 망설여지고…
  2. 또 DBA 분들이 slow query 또는 index를 사용하지 않는 쿼리 등을 각 슬랙방에서 공유 해주시는데 알게모르게 영향을 받았을것 같다. (내가 모른다는걸 인지하고 필요하다고 느낌)

신간 발견을 좋은 기회로 생각하고 읽어봤다!!



1장 MySQL과 MariaDB 개요

간단한 소개와 구조적, SQL 문법의 차이

  • Auto increment: 시퀀스 이용의 차이 등

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

DB 엔진 용어 (MySQL 엔진, Parsor, Optimizer, 스토리지 엔진)

SQL 처리 프로세스 소개

DB 오브젝트 관련 용어 소개 (컬럼, 로우, 기본키, 외래키, 인덱스 등)

그 외 논리적 SQL 개념 용어 (서브쿼리, 조인, 드라이빙 테이블, 드리븐 테이블, 중첩 루프 조인 등)

그 외에 테이블 풀스캔, 인덱스 풀 스캔, 랜덤 엑세스 등등을 소개 합니다

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

EXPLAIN, 실행계획을 소개합니다!

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

  1. 튜닝이 필요한 예제 SQL문
  2. 현황 분석 및 실행 계획 확인
  3. 튜닝 수행 후 실행계획 확인

위 절차로 여러가지 예제를 소개해준다! 물런 한번 읽는걸로 크게 바뀌진 않지만

나중에라도 쿼리 작성하다가 떠오르게 될거같은데… 큰 도움될거같다!


그리고 잘 모르던 나에게 나름 신기했던게(?)

  • 모든 면에서 인덱스 사용이 뛰어난게 아니다 (풀스캔 + 랜덤 엑세스 등)

SQL 조건 하나를 어떻게 쓰냐에 따라서 엄청난 성능의 차이를 가져오는… 이 성능 차이는 평소에 아무 문제 없다가 급 트래픽이 몰릴때, 엄청난 문제를 만들 수도 있고…

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

효율적인 Index를 생성해서 개선하거나, 파티션을 생성하거나 하는 등 물리적인 DB 오브젝트를 변경해본다!



마지막으로 아래 영상도 추천한다

서버 개발자는 무엇부터 학습해야할까? - 프레임워크, Git, SQL, Linux

애플리케이션을 잘 만드는 법을 최우선으로 해야함은 맞지만 결국 그 외에 것들도 익혀나가야 한다.


Written by@Juna
I love Node.js