트랜잭션 격리 수준 완전 이해 — PostgreSQL·MySQL 실전 설정
트랜잭션 격리 수준은 데이터 정합성과 성능을 가르는 핵심 설정이다. PostgreSQL의 RC, MySQL의 RR, 두 DB 사이의 차이를 실전 관점에서 짚는다.
트랜잭션 격리 수준은 데이터 정합성과 성능을 가르는 핵심 설정이다. PostgreSQL의 RC, MySQL의 RR, 두 DB 사이의 차이를 실전 관점에서 짚는다.
정규화 단계별 의미를 실제 DDL로 풀어본다. BCNF와 비정규화 판단 기준까지 다룬다.
5천만 행 주문 테이블이 점점 느려졌다. 인덱스 문제인 줄 알고 한 달을 헤맸는데 범인은 autovacuum이었다. 파라미터를 어떻게 잡았는지 시간순으로 풀어본다.
PostgreSQL 커넥션 풀 설정으로 PgBouncer를 도입했다가 Transaction 모드에서 prepared statement 충돌을 만났다. 3개월 동안 어떻게 잡았는지 시간순으로 풀어본다.
Redis를 캐시로 도입할 때 흔히 저지르는 실수와 Cache-Aside, Write-Through, TTL 설계 기준을 실무 관점에서 정리한다. 캐싱 전략 없이 Redis를 붙이면 오히려 장애 원인이 된다.
프론트엔드에서 백엔드로 전환한 지 2년. 벡터 검색이 필요해졌을 때 별도 벡터 DB를 붙일지 PostgreSQL pgvector로 해결할지 고민했고, pgvector를 선택한 뒤 겪은 설정·인덱싱·쿼리 최적화 과정을 기록한다.
PostgreSQL과 MySQL 중 뭘 골라야 하는지, JSON 쿼리 성능·확장성·AI 인프라 연동까지 직접 써보고 비교한 기록이다. 통념과 다른 부분이 꽤 있었다.
GraphQL resolver 구조 때문에 주문 20건 조회에 SELECT가 62개 실행되는 상황을 겪었다. DataLoader를 적용해 쿼리를 4개로 줄인 전체 과정과 실무에서 빠지기 쉬운 함정, 운영 체크리스트를 다룬다.
인덱스 걸면 빨라진다고들 하는데, 실제로는 그렇지 않은 경우가 많다. EXPLAIN ANALYZE 해석부터 복합 인덱스 컬럼 순서, partial index까지 PostgreSQL 인덱스 최적화 실무에서 겪은 시행착오를 정리했다.