| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- JavaScript
- Infra
- observability
- API
- auth
- CSS
- database
- PostgreSQL
- Ops
- Kubernetes
- CI
- react
- NextJS
- 버전관리
- Git
- reliability
- architecture
- backend
- SRE
- Debugging
- 성능
- aws
- frontend
- Operations
- version-control
- HTTP
- Security
- DevOps
- Performance
- web
- Today
- Total
목록PostgreSQL (8)
고민보단 실천을
PostgreSQL Full-Text Search 실전: tsvector, GIN 인덱스, ranking으로 검색 만들기LIKE '%keyword%'는 쉽게 시작하지만, 데이터가 늘면 곧 한계가 온다. Postgres 내장 FTS로 인덱스를 타는 검색을 만드는 최소 구성을 정리한다.tsvector + GINALTER TABLE articles ADD COLUMN search tsvector;UPDATE articles SET search = to_tsvector('simple', coalesce(title,'') || ' ' || coalesce(body,''));CREATE INDEX CONCURRENTLY idx_articles_search_gin ON articles USING GIN (search..
PostgreSQL Advisory Lock 실전: 분산 작업 조율과 중복 실행 방지분산 환경에서 하나만 실행돼야 하는 작업은 많다(정산 배치, 리포트 생성 등). 이미 PostgreSQL을 쓰고 있다면 Advisory Lock으로 간단히 조율을 해결할 수 있다.자주 쓰는 함수pg_try_advisory_lock: 즉시 시도, 실패하면 falsepg_try_advisory_xact_lock: 트랜잭션 종료 시 자동 해제(xact lock)xact lock 예시BEGIN;SELECT pg_try_advisory_xact_lock(42) AS locked;-- locked=false면 종료-- locked=true면 작업 수행COMMIT;키를 어떻게 만들까키는 '무엇을 직렬화할 것인지'를 표현해야 한다. 테..
Docker Compose 로컬 개발 환경 표준화: healthcheck, depends_on, 초기화 스크립트로컬 환경이 흔들리면 온보딩/디버깅 비용이 올라간다. Compose로 누가 돌려도 같은 환경을 만드는 방법을 healthcheck 중심으로 정리한다.depends_on의 오해depends_on은 시작 순서만 보장한다. DB가 준비됐는지는 healthcheck로 보장해야 한다.compose 예시services: postgres: image: postgres:16 healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d app"] interval: 3s retries: 20 api: depends_on:..
DB 데드락 실전: 원인(락 순서) 분석과 재시도/쿼리/인덱스로 줄이는 법데드락은 대부분 락 획득 순서가 서로 다르기 때문에 생긴다. 원인 분석과 예방/완화(재시도) 전략을 정리한다.전형적인 예시-- Tx ABEGIN;UPDATE accounts SET balance = balance - 100 WHERE id = 1;UPDATE accounts SET balance = balance + 100 WHERE id = 2;COMMIT;-- Tx B (순서 반대)BEGIN;UPDATE accounts SET balance = balance - 50 WHERE id = 2;UPDATE accounts SET balance = balance + 50 WHERE id = 1;COMMIT;데드락을 줄이는 3가지 큰 ..
Debezium CDC 입문: MySQL/Postgres 변경 로그로 데이터 동기화 파이프라인목표: 이 글을 읽고 나면 "어떤 선택이 우리 팀에 맞는지"를 기준으로 정할 수 있고, "바로 적용할 체크리스트"를 가져갈 수 있게 만드는 것입니다.전제: 인기 있는 글은 "개념"보다 "결정"과 "실수 방지"에 시간을 씁니다. 그래서 이 글은 설명을 길게 늘리기보다, 기준/예시/검증 순서로 정리합니다.이 글이 필요한 사람분산 환경에서 정합성/재처리/복구가 자주 문제 되는 팀이벤트 기반/비동기 처리로 확장하려는데 운영 난이도가 걱정되는 팀장애 때 '수동 복구'가 아니라 '복구 루틴'을 만들고 싶은 팀추천 기본값(실무에서 안전한 시작점)중복/재처리는 정상 케이스로 가정(at-least-once 전제)복구 가능성을 우..
PostgreSQL 성능/특성 정리: 플래너/통계/VACUUM/MVCC로 느린 쿼리 잡기이 글은 PostgreSQL를 성능/운영 관점에서 길게 정리한 개인 노트입니다. 목표는 "지금 느린 이유"를 증거로 좁히고, 재발을 줄이는 체크리스트를 갖추는 것입니다.전제: 성능은 DB만으로 결정되지 않습니다. 쿼리 패턴, 데이터 분포, 인덱스/스키마, 애플리케이션 트랜잭션 경계, 인프라(IO/네트워크)가 함께 결정합니다. 그래서 이 글은 '성능 모델(어디서 시간이 쓰이나) -> 설계/쿼리 -> 설정 -> 운영' 순서로 정리합니다.PostgreSQL은 '통계(플래너) + MVCC + VACUUM(가비지 회수)'가 성능을 좌우합니다. 느린 쿼리 원인을 고립시키는 순서를 잡는 게 핵심입니다.이 DB를 언제 선택하나정답은..
Spring Boot Testcontainers 실전: PostgreSQL/Redis 통합테스트를 CI에서 안정화하기Testcontainers는 '내 컴퓨터에서는 되는데 CI에서는 실패'를 줄여주는 통합테스트 표준 패턴이라 검색 유입이 꾸준합니다. 이 글은 Spring Boot에서 Postgres/Redis 컨테이너를 기반으로 통합테스트를 안정화하는 포인트를 정리합니다.컨테이너 기반 통합테스트는 환경 차이를 줄여 회귀를 빨리 잡습니다.옵션/핵심 요소(3~6개)항목의미언제 쓰는지(실무 상황)PostgreSQLContainerDB 컨테이너마이그레이션+JPA까지 포함한 검증Redis 컨테이너캐시/락 검증운영과 동일한 Redis 동작을 테스트CI Docker실행 환경러너에서 Docker 사용 가능 여부 확인랜덤..
PostgreSQL 커넥션 고갈 디버깅: HikariCP pool size 계산과 timeout 튜닝커넥션 고갈은 SQL을 AI에 물어봐도 해결되지 않는 운영 이슈입니다. 풀을 키우기 전에 '점유 시간이 긴 쿼리/트랜잭션'을 먼저 확인해야 합니다. 이 글은 HikariCP 설정과 디버깅 포인트를 정리합니다.풀은 제한된 커넥션을 큐잉합니다. 설정과 쿼리 시간이 함께 중요합니다.옵션/핵심 요소(3~6개)항목의미언제 쓰는지(실무 상황)maximumPoolSize최대 커넥션DB max connections와 인스턴스 수로 계산connectionTimeout대기 한도고갈 시 빠르게 실패시켜 전파 통제leakDetectionThreshold누수 감지반납 누락 추적slow query점유 시간긴 쿼리/트랜잭션이 풀을 ..
