들어가며"이 API 응답이 왜 3초나 걸리죠?" 운영 중인 서비스에서 이런 질문을 받으면 심장이 철렁합니다. 로직은 단순한데 DB 쿼리만 2.8초를 잡아먹고 있고, 슬로우 쿼리 로그에는 이미 수백 건이 쌓여 있습니다. 인덱스를 추가하면 될 것 같은데, 어디에 어떤 인덱스를 걸어야 할지 막막합니다.3~7년차 백엔드 개발자라면 이런 상황을 한두 번쯤 겪어보셨을 겁니다. JPA가 생성하는 쿼리를 믿고 있었는데 데이터가 100만 건을 넘기면서 Full Table Scan이 발생하고, 복합 인덱스를 잘못 설계해서 오히려 INSERT 성능이 떨어지는 경우도 빈번합니다. MySQL 성능 튜닝은 단순히 인덱스를 추가하는 것이 아니라, 쿼리가 실제로 어떻게 실행되는지 이해하고 체계적으로 접근하는 과정입니다.이 글에서는 ..