확장
pgvector, pg_trgm, hstore, pgcrypto, pgaudit 등 RDS for PostgreSQL 18 목록 대부분인 확장 44개가 엔진에 컴파일되어 있습니다. CREATE EXTENSION으로 켜세요.
확장은 엔진에 컴파일되어 들어 있습니다. PostgreSQL에서와 똑같이 프로젝트가 CREATE EXTENSION으로 켜면 되고, 따로 설치하거나 공유 라이브러리를 로드할 일은 없습니다. 목록은 RDS for PostgreSQL 18이 공개한 것을 따르되, 단일 프로세스 임베디드 엔진이 담을 수 없는 것은 제외했습니다(이 페이지 끝 참고).
CREATE EXTENSION vector;
CREATE EXTENSION pg_trgm;각 확장의 자체 회귀 테스트를 같은 확장을 넣어 빌드한 참조 PostgreSQL 18.6과 비교해 실행하며, 이 페이지에 적힌 예외를 빼면 출력이 바이트 단위로 동일합니다.
포함된 확장
| 영역 | 확장 |
|---|---|
| 텍스트 검색·매칭 | pg_trgm 1.6 · pg_bigm 1.2 · pg_similarity 1.0 · fuzzystrmatch 1.2 · unaccent 1.1 · citext 1.8 · prefix 1.2 · dict_int 1.0 · dict_xsyn 1.0 |
| 벡터·데이터 타입 | vector (pgvector) 0.8.7 · hstore 1.8 · ltree 1.3 · cube 1.5 · earthdistance 1.2 · seg 1.4 · isn 1.3 · ip4r 2.4 · intarray 1.5 · hll 2.21 · roaringbitmap 1.3 · uuid-ossp 1.1 · lo 1.2 |
| 인덱싱·플래닝 | btree_gin 1.3 · btree_gist 1.8 · bloom 1.0 · hypopg 1.4.3 · tsm_system_rows 1.0 · tsm_system_time 1.0 · amcheck 1.5 · pageinspect 1.13 · pg_hint_plan 1.8.1 · auto_explain |
| 유틸리티 | pgcrypto 1.4 · tablefunc 1.0 · orafce 4.17 · pg_partman 5.5 · pgtap 1.3.5 · tcn 1.0 · autoinc 1.0 · insert_username 1.0 · moddatetime 1.0 · refint 1.0 |
| 감사·확장 호스팅 | pgaudit 18.0 · pg_tle 1.5.3 |
켜는 방법
대부분은 데이터베이스마다 한 번 CREATE EXTENSION 이름;을 실행하면 됩니다. 일반 DDL 문이므로 다른 스키마 변경처럼 마이그레이션에 넣으세요.
둘은 확장이 아니라 모듈이라 CREATE EXTENSION이 없습니다. 필요한 세션에서 로드하세요.
LOAD 'pg_hint_plan';
LOAD 'auto_explain';LOAD는 그 세션 동안만 유지됩니다. env.db를 쓴다면 세션을 먼저 읽으세요. 기본값은 호출마다 새 세션입니다. pg_hint_plan은 hint_plan.hints 테이블용 CREATE EXTENSION pg_hint_plan도 있지만, 주석에 쓰는 힌트는 LOAD만으로 동작합니다.
알려진 차이
모든 확장이 설치되고 제 역할을 합니다. 몇몇은 자체 테스트의 일부가 단일 프로세스 임베디드 엔진에 없는 것을 요구합니다.
| 확장 | 동작하지 않음 | 동작함 |
|---|---|---|
amcheck | verify_heapam — 8 kB 힙 페이지를 읽는데, 여기서는 테이블 행이 힙 페이지로 저장되지 않음 | bt_index_check, bt_index_parent_check |
pageinspect | 힙 페이지 함수(heap_page_items, 테이블에 대한 get_raw_page) | 모든 인덱스 페이지 함수 — bt_page_items, gin_*, brin_*, page_header, fsm_page_contents |
pg_hint_plan | 디버그 트레이스의 문장 번호가 일부 다름 | 힌트는 적용되며, 플랜은 PostgreSQL의 것 |
pg_partman | 백그라운드 워커(pg_partman_bgw) — 두 번째 프로세스가 없음 | 나머지 전부. run_maintenance()를 직접 호출하세요(예: runlot cron) |
pg_tle | ALTER SYSTEM(postgresql.auto.conf가 없음)과 백그라운드 워커에서 도는 passcheck / clientauth 훅 | TLE 확장의 설치와 실행, 기본 타입, 연산자, 기능 레지스트리 |
pgaudit | CREATE/ALTER/DROP DATABASE 감사 — 프로젝트당 데이터베이스가 하나 | 나머지 전부. pgaudit.log를 설정하면 감사 줄이 프로젝트 로그에 나타납니다 |
pgvector: HNSW 인덱스가 복구되는 시점
삭제 후 HNSW 인덱스는 VACUUM이 복구하는데, 이 복구는 비쌉니다 — 10만 행 중 1 %를 지운 경우 약 46초. 그래서 시간당 유지보수 sweep은 HNSW 인덱스가 있는 테이블을 건드리지 않고, 프로젝트가 유휴 상태가 되어 park될 때 테이블당 10분 예산으로 복구합니다. 프로젝트가 한 번도 유휴가 되지 않으면 그때까지 삭제된 행이 남아 있습니다. 인덱스는 여전히 올바르게 답하고, 크기가 줄지 않을 뿐입니다. 삭제가 잦고 프로젝트가 늘 바쁘다면 복구 비용이 B-tree와 같은 IVFFlat을 쓰세요.
env.vectors는 이것과 무관하게 그대로입니다. 해당 페이지에 적힌 대로 자체 저장소와 정확 검색을 유지합니다. pgvector는 여러분의 SQL에서 쓸 수 있습니다.
포함되지 않은 것과 그 이유
엔진은 프로젝트당 프로세스 하나, 데이터베이스 하나입니다. 두 번째 프로세스가 필요한 것은 보류가 아니라 설계상 제외입니다. 실제 백그라운드 워커 루프가 있는 확장(pg_cron, TimescaleDB), 논리 디코딩 출력 플러그인(pglogical, wal2json), 자체 libpq를 가진 확장, PL/Perl과 PL/Python, libxml 기반 확장, WAL이나 pg_control 검사가 여기에 해당합니다. PostGIS는 현재 목록에 없습니다.
직접 만든 공유 라이브러리를 로드하는 것도 불가능하며 앞으로도 지원하지 않습니다. 프로젝트별 프로세스가 격리 경계입니다.