#PostgreSQL · 15개
PostgreSQL 쿼리가 락에 걸려 멈출 때
RDS PostgreSQL을 운영하다 보면 평소 수십 밀리초에 끝나던 UPDATE가 갑자기 몇 분씩 응답이 없는 상황을 만난다. CPU도 멀쩡하고 디스크 I/O도 한가한데 특정 테이블을 건드리는 쿼…
Patroni와 etcd로 PostgreSQL 자동 승격
RDS를 쓰면 Multi-AZ 토글 하나로 장애 조치가 끝난다. 그런데 EC2에 PostgreSQL을 직접 올려 쓰는 환경이라면 그 자동 승격을 손으로 만들어야 한다. 예전에 keepalived와 …
논리적 복제로 PostgreSQL 최소 중단 업그레이드
메이저 버전 업그레이드는 미루기 쉬운 일이다. RDS의 in-place 업그레이드는 버튼 한 번으로 끝나는 대신 그 시간만큼 DB가 멈춰 있고, 데이터가 크면 중단이 수십 분으로 늘어난다. 서비스를…
락 없이 PostgreSQL 인덱스 추가하기
운영 중인 테이블에 인덱스 하나 추가하려다 서비스가 멈춘 경험이 한 번쯤 있을 것이다. 가입자가 늘면서 느려진 쿼리를 잡으려고 인덱스를 거는데, 그냥 CREATE INDEX 를 때리면 테이블 쓰기가…
RAG 정확도를 리랭커로 끌어올리기
RAG를 붙여 놓고 나면 꼭 한 번은 겪는 장면이 있다. 질문은 멀쩡한데 모델이 엉뚱한 문단을 근거로 답을 지어낸다. 로그를 열어 보면 벡터 검색이 가져온 상위 문서부터 질문과 미묘하게 어긋나 있다…
pg_stat_statements로 느린 쿼리 Top N 뽑기
운영 중인 서비스가 느려질 때 어디서부터 봐야 할지 막막한 경우가 많다. 특정 화면 하나가 아니라 서버 전체가 무겁게 느껴지면 슬로우 쿼리 로그만으로는 그림이 안 잡힌다. 나는 이럴 때 개별 쿼리 …
Flyway로 Spring Boot 스키마 버전 관리
운영 DB 스키마를 누가 언제 어떻게 바꿨는지 추적이 안 돼서 곤란했던 경험은 대부분 있을 것이다. 개발 DB에서는 되던 쿼리가 운영에서 컬럼이 없다고 터지고, ALTER 문은 누군가의 로컬 메모나…
Testcontainers로 Spring Boot 통합 테스트에 진짜 DB와 Kafka 띄우기 - @ServiceConnection, 컨테이너 재사용, CI 설정
통합 테스트를 H2 인메모리 DB로 돌려놓고 운영은 PostgreSQL로 하는 프로젝트를 자주 본다. 나도 예전엔 그렇게 했다. 빠르고 편하니까. 문제는 방언(dialect) 차이에서 터진다. H2…
PostgreSQL 17 네이티브 증분 백업 - pg_basebackup --incremental로 뜨고 pg_combinebackup으로 복구본 합성하기
EC2에서 직접 굴리는 PostgreSQL의 백업 스크립트를 손보다가, 그동안 pg_basebackup 으로 매번 전체본을 통째로 떠오던 게 눈에 걸렸다. DB가 수백 GB로 커지면 이 전체 백업 …
pg_stat_statements로 느린 쿼리 찾고 auto_explain으로 실행계획 보기 - RDS/EC2 PostgreSQL 튜닝
운영 DB가 갑자기 느려졌다는 이야기를 들으면 제일 먼저 하는 일이 "어떤 쿼리가 느린지"부터 특정하는 것이다. 그런데 막상 접속해서 pg_stat_activity 를 들여다봐도 그 순간 마침 도는…
PostgreSQL XID wraparound로 DB가 멈췄을 때: 'database is not accepting commands' 진단과 복구
새벽에 애플리케이션이 통째로 쓰기를 못 하고 로그에 database is not accepting commands 가 찍히면 대부분 여기서 처음 XID wraparound라는 단어를 검색하게 된다.…
pg_wal이 계속 커져 디스크가 꽉 찰 때: 남아 있는 복제 슬롯 정리와 max_slot_wal_keep_size 설정
DB 스토리지 경고를 받고 급하게 접속해 본 경험은 운영을 해본 사람이라면 한 번쯤 있을 것이다. 그런데 막상 들어가 보면 테이블은 그대로인데 pg_wal 만 부풀어 있는 경우가 꽤 있다. 스토리지…
Spring Boot JPA N+1 쿼리 진단과 해결: generate_statistics, fetch join, @EntityGraph, @BatchSize
코드 리뷰나 성능 점검을 하다 보면 JPA N+1 얘기를 반복해서 하게 된다. 목록 화면 하나 열었을 때 쿼리가 몇 개 나가는지 물어보면 답이 바로 안 나오는 경우가 많고, 원인을 찾은 뒤에도 fe…
Springboot - PostgreSQL - DataSource - Maven 연동
1. 배경 Springboot 기반으로 PostgreSQL 연동하여 작업 실행. 2. Maven Dependency dependency groupid org.postgresql /groupid ar…
PostgreSQL 설치 방법
1. 개요 2. apt 설치 및 삭제 2.1. 설치 Ubuntu 기준으로 하여, apt로 설치한다. $ sudo apt install postgresql Reading package lists...…