DevInsight

개발하며 겪은 판단을 적어요

주제별 아카이브

Data

데이터 플랫폼, 분석, 검색, 파이프라인 이슈를 다룹니다.

현재 3개의 발행 글이 이 주제에 속해 있습니다.

Data

만들어 둔 인덱스를 쿼리가 외면하는 순간들, EXPLAIN으로 사인을 읽는 법

인덱스를 만들어도 EXPLAIN에 풀스캔이 찍히는 일은 흔하다. 함수로 감싼 컬럼, 타입 불일치, LIKE의 선행 와일드카드, 낮은 선택도라는 네 가지 패턴이 쿼리와 인덱스 사이의 연결을 끊는다. 이 글은 각 패턴이 실행 계획을 어떻게 왜곡하는지 실제 예시로 짚고, EXPLAIN 해석부터 원인 확정까지 원인을 좁혀 고치는 절차를 정리한 결정 메모다.

#PostgreSQL#EXPLAIN#인덱스#풀스캔
Data

1번 조회가 100번이 되는 순간

에러 로그에는 남지 않으면서 DB 부하만 조용히 키우는 N+1 쿼리. ORM이 연관 엔티티를 개별 SELECT로 쪼개는 구조적 원인부터, 실행 로그와 계측 데이터에서 폭주 지점을 특정하는 순서, 그리고 연관 데이터의 수와 변동성에 따라 eager loading과 배치 조회를 나누는 판단 기준까지 실전 절차 순으로 담았다. 쿼리 개수 자체보다 트레이드오프를 보는 관점이 핵심이다.

#N+1#ORM#JPA#쿼리 최적화
Data

데이터는 반드시 낡는다. 그리고 그 사실을 받아들일 때 진짜 설계가 시작된다.

TTL과 태그 기반 무효화, stale-while-revalidate를 언제 선택해야 하는지 구체적인 판단 기준을 제시한다. 캐시로 인한 데이터 불일치를 비즈니스 관점에서 어디까지 용인할지 결정하는 프레임워크와 무효화 비용을 최소화하는 실전 패턴을 함께 다룬다. 사용자 프로필 페이지에서 '최근 구매 목록'이 3초 전 데이터를 보여주고 있다.

#캐시무효화#TTL#stale-while-revalidate#캐시전략