PostgreSQL - PostgreSQL 로컬 Docker 환경에서 pg_bigm 설치하기
작성 일자 : 2025년 05월 18일
pg_bigm
이란?
pg_bigm
은 PostgreSQL의 확장 모듈로, bigram(2-gram) 기반의 인덱스를 생성하여 전체 텍스트 검색 성능을 향상시키는 데 사용됩니다.
특히 한국어, 일본어 등 다중 바이트 문자를 사용하는 언어에서 효과적이며, LIKE '%검색어%'와 같은 중간 문자열 검색에서도 빠른 성능을 제공합니다.
- bi-gram 인덱스 생성: 문자열을 연속된 두 글자씩 분할하여 인덱스를 생성함으로써 빠른 검색을 지원합니다.
- 다국어 지원: 한국어, 일본어 등 비알파벳 언어에 대한 검색 성능이 우수합니다.
- LIKE 연산자 최적화: LIKE '%검색어%' 형태의 중간 문자열 검색에서도 인덱스를 활용하여 성능을 향상시킵니다.
pg_trgm
과의 차이점:
- 인덱스 단위:
pg_trgm
은 trigram(3-gram),pg_bigm
은 bigram(2-gram)을 사용합니다. - 언어 지원:
pg_trgm
은 알파벳 기반 언어에 최적화되어 있으며,pg_bigm
은 다국어 지원에 강점을 가집니다. - 인덱스 크기 제한:
pg_bigm
은 인덱스 열 크기가 약 102MB로 제한되며,pg_trgm
은 약 228MB까지 지원합니다.
Docker 환경에서 pg_bigm
설치하기
Directory 구조
.
├── .env
├── docker-compose.yml
└── Dockerfile
.env 파일
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=mydb
TZ=UTC
docker-compose.yml
파일
version: '3.8'
services:
postgres:
build: .
container_name: postgres_db
env_file:
- .env
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 5
volumes:
postgres_data:
Dockerfile
파일
FROM postgres:16
# 1) install CA certs + build deps
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
build-essential \
postgresql-server-dev-16 \
git \
&& update-ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# 2) clone & build pg_bigm using PGXS
RUN git clone https://github.com/pgbigm/pg_bigm.git /tmp/pg_bigm \
&& cd /tmp/pg_bigm \
&& make USE_PGXS=1 PG_CONFIG=$(which pg_config) install \
&& rm -rf /tmp/pg_bigm
Docker 이미지 빌드 및 실행
docker-compose build
docker-compose up -d
PostgreSQL에서 이용 가능한지 확인
SELECT * FROM pg_available_extensions;
pg_bigm 확장 사용
CREATE EXTENSION IF NOT EXISTS pg_bigm;
사용중인지 확인
SELECT * FROM pg_extension;
GitHub - pgbigm/pg_bigm: The pg_bigm module provides full text search capability in PostgreSQL. This module allows a user to cre
The pg_bigm module provides full text search capability in PostgreSQL. This module allows a user to create 2-gram (bigram) index for faster full text search. - pgbigm/pg_bigm
github.com