PostgreSQL 가이드와 튜토리얼

이 가이드들은 Postgres 자체를 다룹니다. 각 글은 운영 환경에서 실제로 마주칠 수 있는 문제에서 출발해, psql에 그대로 붙여 넣을 수 있는 SQL로 재현하고, 확인할 수 있는 해결 방법으로 끝납니다. 기준은 Relyt One이 실행하는 PostgreSQL 17이며, 내용 대부분은 최신 Postgres 전반에도 적용됩니다. 아래 읽기 순서를 따라 차례로 읽거나, 지금 겪는 문제에 맞는 가이드로 바로 이동하세요.

11 개의 글

여기서 시작하세요

권장하는 순서대로 네 편의 가이드를 소개합니다. 테이블을 잠그지 않고 스키마를 바꾸는 방법, 쿼리가 인덱스를 쓰게 하는 방법, 행 수준 보안의 빈틈을 막는 방법, 그리고 Postgres 18에서 옮겨 올 때 바뀌는 점입니다.

  1. PostgreSQL 마이그레이션 테이블 락: ALTER TABLE별로 어떤 락을 잡는지, 그리고 안전하게 배포하는 방법한 줄짜리 ALTER TABLE이 테이블의 모든 쿼리를 멈추게 하는 이유, PostgreSQL 17에서 흔한 마이그레이션이 각각 어떤 락을 잡고 어떤 것이 테이블을 다시 쓰는지, 그리고 운영 환경을 멈추지 않게 하는 lock_timeout, NOT VALID, CONCURRENTLY 패턴을 설명합니다.
  2. PostgreSQL이 인덱스를 사용하지 않는 이유 7가지: 직접 재현할 수 있는 EXPLAIN 출력과 함께인덱스를 만들었는데도 EXPLAIN에 순차 스캔이 나옵니다. PostgreSQL이 인덱스를 사용하지 않는 일곱 가지 이유(함수, 캐스트, 와일드카드, 선택도, 오래된 통계, 컬럼 순서, 작은 테이블)를 재현 방법과 해결책과 함께 설명합니다.
  3. 행 수준 보안이 조용히 뚫리는 다섯 가지 경우행 수준 보안은 깜빡한 WHERE 절에 대한 최고의 방어책입니다. 조용히 적용을 멈추기 전까지는 그렇습니다. PostgreSQL 17에서 행 수준 보안이 뚫리는 다섯 가지 경우를 재현 방법, 해결책, CI에서 잡아내는 카탈로그 쿼리와 함께 소개합니다.
  4. Postgres 18에서 오셨나요? Postgres 17에서 바꿔야 할 것들Relyt One은 PostgreSQL 17에서 실행됩니다. 스키마나 습관이 Postgres 18에서 왔다면, 17에서 무엇이 실패하는지, 대신 무엇을 써야 하는지, 18에서 만든 덤프를 어떻게 불러오는지 소개합니다. 모든 코드는 두 버전에서 모두 실행했습니다.

Postgres 태그가 달린 다른 글

RSS 피드

영어로 된 글을 더 볼 수 있습니다. 영어 글