728x90
반응형

DB 3

Hikari CP Connection is not available 오류

일을 하면서 서버 에러로그에 언제부턴가HikariPool-1 - Connection is not available, request timed out after 3000ms위와 같은 에러 문구가 특정 주기를 가지고 계속 노출되었다.일단 여러가지 문제가 있었는데, 먼저 해결된 것부터 써보려고 한다.HikariCP pool size일단 내가 개발하는 서비스 특성상 특정 시간대 or CRM으로 푸시알림이 발송된 순간에 트래픽이 몰리는 경향이 있다.그래서 내가 입사하기 이전부터 서비스에선 hikari cp 권장사항인 maximum-pool-size와 minimum-idle 개수를 다르게 줬었다.물론 minimumIdle 설정 개수가 더 적었었다.그렇게 잘 유지되다가 어느날부터 트래픽이 몰리면 이제 유휴에서 max..

DB 2025.02.19

쿼리 속도 개선기

쿼리 속도 개선 업무중 엄청 느린 쿼리들이 여럿 있었다. 그냥 단순히 select * from 으로 모든 칼럼을 조회하는 것이 아니라 조건에 맞는 데이터를 뽑는 로직들이 있었는데 일단 복합키로 PK가 잡혀있는 상황이고, 세개의 복합키들 중에 두개는 중복되는게 많았다. 다시 말해 카디널리티가 낮은 것 들이었다. JPA를 사용해서 더럽게 뽑아온 다음에 가공하려고 했었지만, 데이터가 많아서 그것조차 조금 어려운 상황이었다. 계속 똑같은 쿼리문을 반복적으로 실행시키니까 처음 사용자입장에선 빨리 받아오는 것처럼 느낄지 모르겠다 (근데 이것도 느리다.) 하지만 맨 뒤쪽에 와서 이 쿼리를 실행하게 된 사람은 앞 사람들이 요청한 그 트랜잭션들이 처리된 후에나 실행이 되기 때문에 쿼리가 1초이고 누른 사람이 10명이라면..

DB 2022.08.07

[DB] 옵티마이저

옵티마이저(Optimizer) 옵티마이저란, SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리 경로를 생성해주는 데이터베이스의 핵심엔진이다. 여기서 사용한 DB는 MariaDB이다. 옵티마이저 엔진 Parser : SQL 문장의 각 요소를 파싱해서 파싱트리를 만듦(문법 검사, 구문 분석) Query Transformer : SQL문을 효율적으로 실행하기 위해 더 일반적이고 표준적인 형태로 옵티마이저 변환 Estimator : 시스템 통계정보를 사용해서 SQL 실행비용을 계산 Plan Generator : SQL을 실행할 계획들을 수립 Row-Source Generator : 옵티마이저가 생성한 계획을 SQL Engine이 실행 가능한 코드로 포맷 SQL Engine : SQL 실행 컴퓨터의 ..

DB 2022.08.05
728x90
반응형