Spring 웹서버 1대 <-----------> DB MySQL 서버 1대가 존재합니다.
웹서버에서 아래 두개 쿼리가 실행됩니다.
구매한 적이 있는 회원 = 전체 회원 0.1% 비율
휴면 회원 = 전체 회원 30% 비율
1번의 요청이 아니라
쇼핑몰 사내 직원들이 모두 볼 수 있는 관리자 페이지로
짧은 시간에 다수의 클라이언트 요청이 들어옵니다.
SELECT
user_id,
SUM(price) AS total_price
FROM
orders
GROUP BY
user_id;
--- 유저 별 총 구매 금액
모든 유저 별 주문 합계를 집계한 결과를
Spring 서버에서 List<OrderSum>로 받고
SELECT
id AS user_id
FROM
users
WHERE
dormant = 'Y';
-- 휴면 회원은 제외
휴면 회원 목록을 List<휴면User>로 받고
웹서버에서 두 List를 종합하여 휴면 회원은 제외하고
모든 유저별 (누적 구매 금액)의 평균 값을 구하도록 구현이 되어 있습니다.
화면에 출력되는 결과 예시
ex. 1인 당 총 구매 금액 평균(AVG) = 35,341원
어느날 Spring 서버에서 OOM이 발생하였습니다.
반면에, DB서버는 OOM이 발생하지 않았습니다.
1. DB 서버에는 OOM이 발생하지 않은 이유를 설명해주세요.
2. Spring 서버에서 OOM이 발생하지 않도록 해결 방법을 설명해주세요.
'쿼리 튜닝' 카테고리의 다른 글
| 휴먼 회원 조회 문제 (0) | 2025.12.12 |
|---|---|
| distinct한 값을 빠르게 뽑기 문제 (2) | 2025.11.30 |
| JOIN+Range Scan 충돌 문제 (0) | 2025.10.21 |
| 2차 정렬로 인한 문제 (0) | 2025.09.27 |
| 최근 접속자 목록 조회 문제 (0) | 2025.08.20 |