#database
11개의 글.
PostgreSQL 인덱스 설계 총정리 — 부분·복합·커버링·표현식부터 GIN/BRIN까지
PostgreSQL 인덱스는 부분·복합·커버링(INCLUDE)·표현식 인덱스로 작고 정확하게 좁힐 수 있고, jsonb·배열은 GIN, 시계열 대용량은 BRIN이 적합하며, CONCURRENTLY·EXPLAIN으로 안전하게 운영합니다.
2026-06-11 · 15 min read
#postgresql#database#index#sql#performance
PostgreSQL에서 varchar(n) 대신 text를 권장하는 이유
PostgreSQL 에서 varchar(n) 과 text 는 저장 구조(varlena)가 같아 성능 차이가 없고, varchar(n) 은 임의의 길이 제한으로 운영 장애만 유발하므로 기본값은 text + CHECK 를 권장합니다.
2026-06-11 · 8 min read
#postgresql#database#sql#데이터모델링
Fractional Indexing: 정렬된 리스트의 순서를 한 row만 바꿔 관리하기
리스트 순서 변경 시 전체 데이터를 수정해야 하는 정수 인덱스의 한계를 넘어 문자열 기반의 키를 활용해 단 하나의 행만 업데이트하여 효율적으로 순서를 관리하는 Fractional Indexing 기법을 소개합니다
2026-06-10 · 11 min read
#fractional-indexing#database#협업#crdt
pgvector로 PostgreSQL에서 시맨틱 검색 구현하기
pgvector 는 PostgreSQL 에 vector(N) 컬럼과 코사인 연산자(<=>)를 더해 별도 벡터 DB 없이 시맨틱 검색을 구현하며, 데이터가 자주 바뀌면 recall 높은 HNSW 인덱스가 기본 선택지입니다.
2026-06-02 · 25 min read
#postgresql#ai#search#database
PostgreSQL 트랜잭션 격리 수준 실전 정리
PostgreSQL 의 Repeatable Read 는 스냅샷 격리로 phantom read 까지 막지만 write skew 는 허용하며, 이를 막으려면 Serializable 로 올리고 40001 재시도 로직을 짝지어야 합니다.
2026-06-01 · 26 min read
#postgresql#database#transaction#backend
무중단 데이터베이스 스키마 마이그레이션
운영 중 스키마 변경은 한 번에 바꾸지 않고 expand→migrate→contract 로 나눠야 무중단이 되며, CREATE INDEX CONCURRENTLY 와 NOT VALID→VALIDATE 로 강한 락을 피합니다.
2026-05-31 · 28 min read
#postgresql#database#devops#backend
커넥션 풀링과 PgBouncer: 연결 고갈 막기
PostgreSQL 은 연결마다 OS 프로세스를 띄워 연결 고갈이 나기 쉬우며, PgBouncer 를 transaction 모드로 두면 서버 연결을 소수로 묶지만 prepared statement·SET·advisory lock 이 깨질 수 있습니다.
2026-05-30 · 25 min read
#postgresql#database#performance#backend
N+1 쿼리 문제: 원인, 탐지, 해결
ORM 지연 로딩이 행마다 쿼리를 하나씩 더 날려 N+1(1+N 쿼리)이 생기며, 다대일은 JOIN, 일대다·GraphQL 은 배치 IN·DataLoader 로 쿼리 수를 2개로 고정해 해결합니다.
2026-05-29 · 17 min read
#database#orm#performance#backend
페이지네이션 제대로: OFFSET vs 커서(keyset)
OFFSET 은 깊은 페이지일수록 앞 행을 다 읽고 버려 선형으로 느려지고 데이터 변경 중 중복·누락도 생기지만, keyset(커서) 는 정렬 키로 바로 점프해 성능과 정확성을 모두 지킵니다.
2026-05-28 · 27 min read
#postgresql#database#performance#backend
유용한 PostgreSQL 기능 8가지
PostgreSQL 의 DISTINCT ON·LATERAL·FILTER·EXCLUDE·SKIP LOCKED 등 8가지 기능을 쓰면 그룹별 조회·정합성·동시성 제어를 애플리케이션 코드 대신 DB 레벨에서 해결합니다.
2026-05-27 · 10 min read
#postgresql#database#sql#backend
분산 시스템에서 쓰는 ID 형식 총정리 — UUID, ULID, Snowflake, NanoID 비교
신규 프로젝트는 표준이고 시간순 정렬되는 UUID v7 부터 검토하고, 라이브러리·DB 지원이 부족하면 더 짧은 ULID 가 합리적 대안이며, 외부 노출 ID 는 Auto-increment 를 피해야 합니다.
2026-05-18 · 10 min read
#분산시스템#database#uuid#ulid#nanoid#식별자