TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
17161514131211109876
Database
실행계획이 갑자기 바뀌었을 때 — 플랜 고정과 쿼리 힌트 다루기
어제까지 빠르던 쿼리가 오늘 느려지는 이유와 대응책을 정리한다. 파라미터 스니핑, 통계 갱신에 따른 계획 변경, 힌트와 플랜 고정의 사용법, 그리고 그 전에 해야 할 구조적 해결을 다룬다.
Database
학습 기반 쿼리 최적화 — 모델이 옵티마이저를 도울 수 있는 지점
옵티마이저가 실행계획을 고르는 과정에서 무엇이 틀리는지, 학습 기반 접근이 어디를 개선하는지 정리한다. 카디널리티 추정 오류, 플랜 선택, 적용 시 운영 리스크와 검증 방법을 다룬다.
Database
포스트그레SQL 파티션 재구성 — 병합·분할을 안전하게 수행하는 절차
시계열 파티션을 합치거나 쪼개야 할 때 쓰는 DETACH/ATTACH 패턴을 정리한다. 잠금 범위, CONCURRENTLY 옵션, 제약 조건 검증 생략, 대용량에서의 배치 이동까지 실무 절차로 다룬다.
Database
PostgreSQL MVCC — xmin·xmax와 스냅샷으로 보는 동시성
PostgreSQL의 UPDATE가 왜 테이블을 부풀리는지 궁금했다면. xmin·xmax 시스템 컬럼과 스냅샷으로 MVCC의 실제 동작과 블로트·wraparound라는 대가까지 파고듭니다.
Backend
커넥션 풀 사이징 — 크게 잡을수록 느려지는 역설
DB 커넥션 풀을 키울수록 오히려 느려지는 이유와 적정 크기를 잡는 법. 풀 고갈·커넥션 누수, HikariCP 공식, 서버리스와 PgBouncer까지 실전 정리.
Database
EXPLAIN ANALYZE로 실행계획 읽기 — 느린 쿼리를 눈으로 잡기
EXPLAIN ANALYZE로 데이터베이스가 쿼리를 실제 어떻게 실행했는지 읽는 법 — actual time·rows 추정치·스캔 종류를 보고 느린 쿼리를 감이 아니라 근거로 잡는다.
Backend
낙관적 락 vs 비관적 락 — DB 동시성 제어 두 가지 전략
같은 행을 여러 요청이 동시에 고칠 때 쓰는 낙관적 락과 비관적 락. SELECT FOR UPDATE와 버전 컬럼의 차이, 언제 무엇을 골라야 하는지 실무 기준으로 비교합니다.
Database
데이터베이스 2023 트렌드 — 서버리스·벡터 DB·Edge
데이터베이스 2023 트렌드 — 서버리스·벡터 DB·Edge — 실무에서 바로 적용할 수 있는 가이드입니다.
Database
Turso + Drizzle — Edge 데이터베이스 풀스택 구축
Turso + Drizzle — Edge 데이터베이스 풀스택 구축 — 실무에서 바로 적용할 수 있는 가이드입니다.
Backend
Drizzle ORM 시작하기 — TypeScript 네이티브 ORM의 새로운 대안
Drizzle ORM 시작하기 — TypeScript 네이티브 ORM의 새로운 대안 — 실무에서 바로 적용할 수 있는 가이드입니다.
Database
MySQL vs PostgreSQL 2023 완벽 비교 — 프로젝트별 선택 가이드
MySQL vs PostgreSQL 2023 완벽 비교 — 프로젝트별 선택 가이드 — 실무에서 바로 적용할 수 있는 가이드입니다.
Backend
Prisma ORM 시작하기 — TypeScript와 최적의 데이터베이스 ORM
Prisma ORM 시작하기 — TypeScript와 최적의 데이터베이스 ORM — 실무에서 바로 적용할 수 있는 가이드입니다.