본문 바로가기
320x100
728x90

query2

MySQL의 Full-text index를 이용하여 검색 API 성능 개선하기 사내에서 테스트 커뮤니티 매체를 만들고 있는데, 테스트성으로 만든 매체다보니, 커뮤니티의 게시글을 검색하는 API에서 Like '%검색어%' 절로 간단하게 작성해 놨다. 그러다 보니 트래픽이 분당 500~700 사이었는데도 불구하고 RDS의 cpu가 항상 95~98%로 상당히 많은 부하가 있었다. 어찌 보면 당연한 결과다. like절은 인덱스를 타지 않고 기본적으로 풀스캔으로 동작을 하게 된다. 데이터는 약 16만 건의 row가 있었다. EXPLAIN SELECT * FROM contents c WHERE title LIKE '%검색어%'; explain으로 쿼리 전략을 살펴보면 모든 row를 스캔하고 그 대상은 약 13만 건의 데이터임을 알 수 있다. 사용자가 실제로 분당 30~40건의 검색 API를 .. 2023. 1. 16.
RDS,MySQL] slow query 알림 봇 만들기 신규 프로젝트를 진행하면서 백엔드와 DB설계를 맡아서 진행했다. 프로젝트 특성상 많은 DB Select가 일어나고 조인 관계가 복잡해지면서 쿼리 병목현상이 일어나는 지점이 생기면 알림을 쏴서 해결하려 했다. 물론 백엔드 코드를 작성하기 이전에 explain으로 지켜보면서 인덱싱을 적절하게 거는 것도 좋지만, 갈수록 콘텐츠가 많아질 것을 감안하여 슬로 쿼리에 대한 알림 봇을 만들 생각이 났다. 인프런 채용공고에서 봤다.. 사실... 우선 aws콘솔에서 rds 탭에 들어간 후, 알림 봇을 지정할 인스턴스로 들어간다. 인스턴스 -> 구성 -> 제일 아래에 파라미터 그룹을 선택한다. 검색창에 slow라고 검색 후, slow_query_log를 1로 바꿔준다. 우측 상단에 파라미터 편집이 있다. 그다음 long를.. 2022. 11. 10.
300x250
320x100