CS/DB(3)
-
LAG 함수 사용과 쿼리 실행 계획 및 성능 검증
최근 몇 달 동안 사내에서 통계 프로젝트를 진행하면서 경험했던 문제와 해결 과정에 대해 기록하기 위한 포스팅을 작성해보려고 합니다. 이번 포스팅의 메인 주제는 DBMS의 윈도 함수(Window Function) 중 LAG 함수를 사용하게 된 이유와 효과입니다. 재밌게 읽어주세요! 프로젝트(통계 개편) 요구사항 소개프로젝트에서 담당했던 기능은 판매처별 매출 통계 구현이었습니다. 해당 기능에 대해 간단히 설명하자면 다음과 같습니다. 1. 온라인(판매처), 오프라인(매장) 통합 매출 통계를 구현한다. (매출외에 판매수량, 취소수량등과 같은 다른 값도 구현에 포함되었습니다.)2. 일간, 주간, 월간 매출 통계를 집계한다.3. 매출에 대한 전일, 전주, 전월에 대한 증감률을 구한다. (핵심) 기능 요구사항에 대한..
2024.11.17 -
인덱스로 성능 개선하기 (feat. B-Tree 인덱스)
이번 포스팅은 금주에 겪었던 서비스 속도 이슈의 원인을 분석하고 그 과정을 어떻게 해결했는지에 대한 내용을 기록해보려고 합니다. 문제 발생 현재 재직 중인 회사에서는 특정 판매처(ex. 카페 24)와 서비스 간의 재고연동 기능을 지원하고 있습니다. 기능에 대한 설명을 간단히 하자면, 판매처의 재고 수량과 자사 서비스의 재고 수량을 동기화시키는 과정을 의미합니다. 해당 기능은 과거에도 지원하고 있었으며 최근에 레거시(classic asp)를 Laravel Framework로 이전하는 과정에서 속도 이슈가 발생했습니다. 기존의 코드도 재고연동 속도는 느렸지만, 현재는 그걸 감안하지 못할 정도의 수준이 되었다는 것입니다. (상품 1000건 기준 대기 시간 15분 이상) 원인을 파악하는 과정에서 알게 된 ..
2024.08.11 -
프로시저(Procedure) 동작 방식과 동시성 문제
현 직장에서 가장 많이 만나는 문제 중 하나는 동시성 문제입니다. 동시성이 발생하는 이유도 가지 각색인데웹서버의 병목현상으로 인해 요청이 한 번에 처리되는 경우동시에 여러 사용자가 동일한 작업을 수행하는 경우 사용자의 작업과 스케줄러의 작업이 겹치는 경우 등등 여러 가지 이유로 인해 동시성 문제가 발생하게 되면 그때부터는 왜 그런 상황이 발생했는지 찾는 탐정놀이가 시작됩니다.최근에 발생한 동시성 문제는 좀 특이해서 다음에 비슷한 문제가 발생했을 경우를 대비해 기록하려고 합니다. 문제 발생이번에 발생한 동시성 문제의 원인은 정확히 결론 내릴 수 없었지만, 다른 가능성을 소거해 가면서 원인을 파악한 결과, 웹 서버의 병목현상으로 인해 처리 대기 중이던 요청이 한 번에 처리되어 발생한 것으로 결론 내렸습니다..
2024.07.08