728x90
※ PostgreSQL: reload.
안녕하세요. 듀스트림입니다.
오늘은 PostgreSQL에서 설정 파일을 다시 읽도록 요청하는 리로드 명령에 대한 내용입니다.
1. reload
- 리로드 명령은 PostgreSQL 서버 프로세스에게 SIGHUP 시그널을 보내 설정 파일들을 다시 읽도록 하는 명령입니다.
- OS CLI 명령어인 pg_ctl reload와 PostgreSQL의 함수인 pg_reload_conf()로 내릴 수 있습니다.
+ PostgreSQL 설정 파일
파일명 | 역할 |
postgresql.conf | 기본 전역 설정 |
postgresql.auto.conf | ALTER SYSTEM으로 생성되는 설정 |
pg_hba.conf | 접속 인증 설정 |
pg_ident.conf | 클라이언트 인증(매핑) |
++ PostgreSQL 설정 우선순위 (높은 우선순위 → 낮은 우선순위)
세션 레벨 설정 (SET 명령어) > ALTER ROLE SET > ALTER DATABASE SET > postgresql.auto.conf > postgresql.conf
2. 기존 연결된 세션에 대한 처리
- 기존 연결된 세션은 종료되지 않고 그대로 유지됩니다.
- reload는 단순히 설정 파일을 다시 읽는 것일 뿐, 세션을 재시작하거나 커넥션을 끊지 않습니다.
따라서, 기존 커넥션들은 영향을 받지 않거나 일부 파라미터에 한해서만 영향을 받습니다.
3. pg_ctl reload vs pg_reload_conf() 비교
- 내부적으로는 동일하게 동작하며, 어떤 명령어를 쓰든 PostgreSQL는 설정 파일을 다시 읽는 것이 전부입니다.
항목 | pg_ctl reload | pg_reload_conf() |
실행 방식 | 쉘 명령어 (OS 수준) | SQL 함수 (DB 내부) |
동작 | SIGHUP 시그널 전송 | SIGHUP 시그널 전송 |
권한 | PostgreSQL OS 사용자 | 슈퍼유저만 가능 |
적용 대상 | 설정 파일 전반 | 설정 파일 전반 |
기존 세션 영향 | 없음 | 없음 |
적용 가능한 파라미터 | sighup, superuser, user context의 파라미터 | sighup, superuser, user context의 파라미터 |
적용 불가능한 파리미터 | postmaster context | postmaster context |
postgres/src/backend/utils/misc/guc.c at master · postgres/postgres
Mirror of the official PostgreSQL GIT repository. Note that this is just a *mirror* - we don't work with pull requests on github. To contribute, please see https://wiki.postgresql.org/wiki/Subm...
github.com
+ 파라미터명, 컨텍스트 조회 방법
SELECT name, context FROM pg_settings;
++ PostgreSQL 컨텍스트의 계층 구조
- pg_settings.context는 설정 파라미터의 변경 적용 시점을 정의하며, 엄격한 우선순위를 가지며, 다음과 같은 레벨 구조로 구성되어 있습니다.
context 값 | 설명 | reload로 적용 가능 여부 |
postmaster | 서버 시작 시만 적용 (재시작 필요) | ❌ |
sighup | 설정 파일 재로딩 시 적용 | ✅ |
superuser | 슈퍼유저만 세션에서 변경 가능 | ✅ |
backend | 세션 시작 시만 적용 | 🔄 일부 가능 (신규 세션부터) |
user | 일반 유저도 세션 내에서 변경 가능 | 🔄 일부 가능 (신규 세션부터) |
4. ALTER SYSTEM SET과의 관계
ALTER SYSTEM SET 명령 시
- postgresql.auto.conf에 값이 저장됩니다.
- 기존 postgresql.conf보다 우선순위가 높습니다.
- 이 파일은 수동으로 수정하지 않고, PostgreSQL이 자동으로 관리합니다.
- 적용하려면 pg_reload_conf() 또는 pg_ctl reload 호출이 필요합니다.
예시
-- work_mem 설정
ALTER SYSTEM SET work_mem = '64MB';
-- postgresql.auto.conf에서 work_mem 설정 제거
ALTER SYSTEM RESET work_mem;
ALTER SYSTEM SET은 설정값을 postgresql.conf에 저장하는 명령이며, 리로드로 저장된 설정을 반영해야 합니다.
ALTER SYSTEM SET → postgresql.auto.conf 파일 갱신 → pg_reload_conf() 또는 pg_ctl reload → 설정 반영
오늘은 여기까지 ~
728x90
'PostgreSQL' 카테고리의 다른 글
PostgreSQL: ExprContext 기반 GeoJSON 조회 쿼리로 인한 OOM(Out of Memory) 발생 사례 분석 (0) | 2025.05.24 |
---|---|
PostgreSQL: WAL (0) | 2025.05.23 |
PostgreSQL: TOAST (0) | 2025.05.21 |
PostgreSQL: Heuristic and Foreign Key (0) | 2025.05.18 |
PostgreSQL: VACUUM (0) | 2025.05.17 |