본문 바로가기
320x100
728x90

MYSQL8

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.
Intelli J에서 AWS 아테나 및 DB 연결하기 인텔리제이는 참 간편한 IDE다. 여러 가지 언어에 대한 개발 지원 및 다양한 도구들을 지원하여 개발단계에서 많은 기능을 제공하여 개발을 한 층 편하게 해 준다. AWS 아테나는 인텔리제이에서 연결을 지원하는지 모른 채로 매 번 aws 콘솔에 들어가 쿼리를 사용하곤 했다. 게다가 우리 회사는 2중 보안이 되어있어, 매 번 이 과정을 거치며 아테나를 뚫고 뚫고 들어가야 했다. 그러나 인텔리제이에서 이를 해결할 수 있다. 인텔리제이 우측에 보면 Database 탭이 있다. 만약 보이지 않을 경우. View -> Tool Windows -> Database로 활성화 가능하다. 탭을 열면 +버튼이 있는데, Data Source -> Other -> AWS Athena 가 있다. 클릭해주자. User에는 acce.. 2022. 4. 11.
Error] Could not create connection to database server. spring.datasource.url=jdbc:mysql://localhost:3306/{schemaName}?serverTimezone=UTC&characterEncoding=UTF-8 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=1234 서버타임존을 한국 시간으로 되야하는게 아닌가 하고 KST로 했었는데, 오류가 발생 UTC로 바꾸고 해결 참고 : https://higugu.tistory.com/entry/commysqljdbcexceptionsjdbc4MySQLNonTransientConnectionException-Could-n.. 2021. 4. 13.
300x250
320x100