#Performance
총 9편
인덱스가 있는 데도 느린 쿼리와 복합·커버링 인덱스
계약 300만 건 테이블에서 같은 쿼리가 사이트에 따라 2ms와 226ms로 갈렸고, 복합 인덱스로 0.8ms가 됐으며 커버링 인덱스는 거의 차이가 없었던 측정 기록입니다.
스케줄러 배치가 어쩔 땐 성공하고 어쩔 땐 실패한 이유 - 데드락 해결기
10분 주기 스케줄러에서 간헐적 데드락이 발생할 때, 원인 분석부터 4가지 해결 방법과 실제 적용 효과까지 정리합니다.
GraphQL vs REST, 실무에서의 선택 - 언제 뭘 써야 할까?
GraphQL과 REST API, 실무에서 언제 어떤 걸 선택해야 할까? 트레이드오프와 선택 기준을 실전 관점에서 정리한 가이드.
실무에서 바로 쓰는 JPA (5편) - 실무 안티패턴 총정리
실무에서 자주 저지르는 JPA 실수 7가지를 정리했습니다. N+1 무시, 영속성 컨텍스트 오남용, 벌크 연산 후 flush 누락 등 — 코드 예시와 수정 방법을 함께 담았습니다.
실무에서 바로 쓰는 JPA (3편) - 쿼리 최적화 실전
JPQL, QueryDSL, Native Query — 언제 뭘 써야 하는지 성능 측정 결과와 함께 정리합니다. 슬로우 쿼리를 발견했을 때 단계별로 최적화하는 방법도 다룹니다.
실무에서 바로 쓰는 JPA (2편) - 영속성 컨텍스트와 흔한 실수들
영속성 컨텍스트를 모르면 JPA는 시한폭탄이다. OSIV 함정, detached 객체 수정, 벌크 연산 후 flush 누락까지. N+1이 아닌 곳에서 성능을 잡아먹는 흔한 실수 모음.
실무에서 바로 쓰는 JPA (1편) - N+1 문제 해결
JPA N+1 문제를 실무에서 마주치면 어떻게 해결할까요? Fetch Join, EntityGraph, Batch Size 세 가지 방법을 성능 측정 결과와 함께 비교하고, 상황별로 어떤 방법을 선택해야 하는지 정리합니다.
Spring Batch 병렬 처리와 청크 크기 조정 (2편)
병목을 찾았으니 이제 해결할 차례입니다. 병렬 처리와 청크 조정의 트레이드오프를 살펴보고, 성능 수치의 측정 범위와 한계를 구분합니다.
접속기록 배치가 느린 이유 (1편) - 문제 진단과 병목 분석
접속 기록 배치가 느렸습니다. 어디가 병목인지 찾는 과정부터 — JVM 프로파일러, 슬로우 쿼리 로그, 청크 사이즈 분석까지. 진단편입니다.