안녕하세요, 유튜브 SQL 튜닝 강의를 보고 학습한 자료를 남깁니다.
감사합니다.
들어가면서
성능 개선을 위해서 MySQL 구조 먼저 파악하겠습니다.
그리고 SQL 튜닝의 핵심이 무엇인지 짚고 넘어갈 것이다.
-> 어떤 부분에서 MySQL의 성능을 많이 잡아 먹는지, 어떤 요인이 주로 문제를 일으키는지 파악할 수 있어야 한다.
MySQL의 아키텍처
MySQL이라는 서버가 있고
그 안에 MySQL엔진이라는 공간이 있고
스토리지 엔진이라는 공간이 있다.
과정을 알아보자.
1. 클라이언트가 DB에 SQL 요청을 보낸다.
2. MySQL 엔진에서 성능 최적화를 해주는 옵티마이저가 먼저 SQL문을 분석한다.
아 이런 이런 데이터를 가져오는구나 그래서 어떻게 데이터를 가져오면 더 빠르겠다 이렇게 판단을 한 뒤 계획을 세운다.
그 계획에는 어떤 순서로 어떻게 테이블에 접근할지, 인덱스를 사용할지, 어떤 인덱스를 사용할 지 등을 결정한다.
하지만 옵티마이저가 세운 계획은 완벽하지는 않다. 그래서 SQL 튜닝이 필요하다. 옵티마이저가 잘 알아 듣을 수 있도록 튜닝이 필요하다.
3. 옵티마이저가 세운 계획을 바탕으로 스토리지 엔진에서 데이터를 가져온다.
옵티마이저가 세운 계획대로 스토리지 엔진에 데이터가 있는데, 이 데이터를 가져온다.
DB 성능에 문제가 생기는 원인의 대부분은 스토리지 엔진으로부터 데이터를 가져올 때 발생이 된다.
데이터를 찾기가 어려워서 오래 걸리거나, 가져올 데이터가 너무 많아서 오래 걸린다.
SQL 튜닝의 핵심은 스토리지 엔진으로부터 되도록이면 데이터를 찾기 쉽게 바꾸고, 적은 데이터를 가져오도록 바꾸는 것을 말한다.
4. MySQL 엔진에서 정렬, 필터링 등의 마지막 처리를 한 뒤에 클라이언트에게 SQL 결과를 응답한다.
스토리지 엔진에서 가져온 데이터를 MySQL 엔진에서 정렬을 진행하고, 필터링을 진행하는 여러 처리를 거친 다음에
클라이언트에게 SQL 결과를 응답합니다.
SQL 튜닝의 핵심
SQL 튜닝이란 옵티마이저의 실행 계획이 완벽하지 않다. 그래서 우리가 튜닝하는 것을 SQL 튜닝이라고 한다.
이 데이터를 얼마나 쉽게, 적은 데이터를 효율적으로 가져오게 할 것인지가 핵심이다.
1. 스토리지 엔진에서 데이터를 찾기 쉽게 바꾸기
2. 스토리지 엔진으로부터 가져오는 데이터의 양 줄이기
가장 많이 활용되는 방법은 바로 인덱스의 활용이다.
인덱스를 적절하게 사용해야만 DB 성능이 개선이 된다.
정말 감사합니다.
https://www.youtube.com/watch?v=VVszO0lktE4&list=PLtUgHNmvcs6rJBDOBnkDlmMFkLf-4XVl3&index=5
'친절한 SQL 튜닝' 카테고리의 다른 글
[친절한 SQL 튜닝] 7강) [실습] 인덱스 직접 설정해보기 / 성능 측정해보기 (1) | 2024.10.29 |
---|---|
[친절한 SQL 튜닝] 6강) 인덱스(Index)란? (0) | 2024.10.28 |
[친절한 SQL 튜닝] 4강) DB 성능 개선할 때 'SQL 튜닝'을 가장 먼저 해야 하는 이유 (0) | 2024.10.28 |
[친절한 SQL 튜닝] 3강) 신입 백엔드 면접에서 자주 물어보는 'DB 성능 최적화' 경험?! (3) | 2024.10.28 |
[친절한 SQL 튜닝] 2강) 수업 듣기 전 환경 셋팅 (0) | 2024.10.28 |