[성능개선]3000ms를 300ms로: MariaDB의 ROW_NUMBER() 알아보기
대시보드 감사 기록 조회 API의 성능 테스트 중, 1000만 건 데이터 조회 시 응답 시간이 3000ms를 훌쩍 넘는 현상을 발견했다. 당연히 인덱스를 탈 것이라 예상했던 쿼리가 FULL SCAN을 하고 있었다. 이 글은 문제의 원인을 파악하고 응답 시간을 10분의 1로 단축하기까지의 과정과 그 과정에서 배운 점을 담은 기록이다. 1. 문제 상황: 느린 쿼리 그리고 기대와 다른 실행계획 대시보드 화면에서 가장 최근에 기록된 감사기록 5건을 조회하는 API 개발을 맡게 됐다. 기존의 소스코드를 분석해보니 이미 관련 기능을 제공하는 DAO가 있었고, POSTMAN으로 테스트해본 결과 적은 데이터에서는 별 문제없이 잘 동작했다. ...