1.1 실습 환경
Lab은 PostgreSQL 18 container 하나로 시작합니다. Version이 달라지면 plan node, cost, statistics와 EXPLAIN option이 달라질 수 있으므로 결과에 server version을 함께 기록합니다.
docker compose -f compose.yml up -d
docker compose -f compose.yml ps
psql 'postgresql://lab:lab@127.0.0.1:55432/perflab'
SELECT version();
SHOW shared_buffers;
SHOW work_mem;
SHOW random_page_cost;
SHOW effective_cache_size;
Session 단위 실험
Global 설정을 바꾸지 않고 한 session에서만 실험합니다.
SET work_mem = '64MB';
SET max_parallel_workers_per_gather = 0;
RESET work_mem;
enable_seqscan=off 같은 planner method 설정은 대안 plan을 관찰하는 실험에만 씁니다. 운영 해법으로 고정하면 query와 data 변화에 취약합니다.
초기화
Compose는 init.sql로 schema와 skewed dataset을 생성하고 pg_stat_statements를 활성화합니다. Init script는 새 volume을 처음 만들 때만 실행됩니다.
docker compose -f compose.yml down -v
docker compose -f compose.yml up -d
down -v는 Lab data를 삭제합니다. Target compose file과 project를 확인한 뒤 실습 환경에서만 실행합니다.