TIL

9/13

iksadnorth 2023. 9. 13. 20:49

👣 개요

오늘은 "Real MySQL 8.0"라는 책의 '옵티마이저와 힌트' 챕터를 읽고 게시글을 작성했다.

옵티마이저는 MySQL로 요청이 들어온 SQL을 어떤 방식으로 실행해서 
결과를 계산할지에 대한 계획하는 실행 계획을 짜는 주체다.

옵티마이저의 성능에 따라 연산 속도가 결정되기 때문에 
함부로 옵티마이저의 설정을 건드리지면 안된다.

하지만 경우에 따라 직접 만든 웹 App에 적합하지 않은 방식으로
연산을 수행하는 경우도 있기에 이것을 막기 위한 방법으로 '힌트'라는 것을 제공하고 있다.

힌트라는 것은 개발자가 직접 MySQL의 옵티마이저에게 특정 방식에 대해
가산점을 더 줘서 개발자가 판단하기에 더 효율적인 방법으로 SQL을 처리하도록
유도하는 방법이다.

이미 많은 경험을 통해 튜닝된 옵티마이저의 성능을 개발자가 직접
커스터마이징을 해야 하는 것이기에 옵티마이저가 실행 계획을 어찌 계획할 것인지에 
대해 꾀고 있어야 하고 어떤 방식이 더 효율적인지에 대한 판단을 내릴 수 있어야 한다.

해당 챕터는 그것에 대한 내용들을 담고 있었기에 매우 난이도 있는 내용들 뿐이었다.
대략적으로 파악한 내용은 인덱스를 잘 설계하면 메모리와 처리 속도가 비약적으로 향상된다는 
사실이었다. 인덱스는 단순 조회부터 정렬, 그룹핑, 조인 등등에서도 활약할 수 있다.
처리 속도뿐만 아니라 경우에 따라 임시 테이블도 만들지 않아도 되기 때문에 
인덱스를 적극 활용하는 것을 다짐하게 되었다.

해당 부분은 1회독으로만 해서 파악하기 어렵기 때문에 연거푸 읽어야 겠다고 생각했다.

'TIL' 카테고리의 다른 글

9/15  (0) 2023.09.15
9/14  (0) 2023.09.14
9/12  (0) 2023.09.12
9/11  (0) 2023.09.11
WIL - 9/4 ~ 9/10  (0) 2023.09.10