2. DBMS이야기/01. PostgreSQL

[Admin] 3.Server Configuration : 개요 및 Parameter 확인

OSSW(Open Source System SoftWare 2014. 6. 10. 22:59

1. Server Configuration 개요


ㅇDatabase System의 행동을 파라미터를 통해서 설정 및 제어

ㅇ$PGDATA/postgresql.conf 파일에 파라미터 존재 및 설정 변경

ㅇ서버 기동 시 Postmaster는 postgresql.conf 파일 내용을 적용




2. Parameter 확인


ㅇ 확인방법

   1) show all,  show <param> ;

edb=# show wal_level;

 wal_level

-----------

 archive


   2) pg_settings

edb=# select name, setting, unit, category, short_desc, context, from pg_settings where name = 'wal_level';

   name   | setting | unit |          category        |                    short_desc                   |  context  

----------+---------+------+--------------------------+-------------------------------------------------+------------ wal_level | archive |      | Write-Ahead Log/Settings | Set the level of information written to the WAL | postmaster |


   3)  current_setting

edb=# select current_setting('wal_level');

 current_setting

-----------------

 archive



ㅇ pg_settings

   - Parameter 들에 대한 정보 및 현재 설정된 값을 보유

Name

Type

Description

name

text

설정 파라미터 이름

setting

text

파라미터 현재 설정 값

unit

text

내포된 파라미터 단위

category

text

파라미터가 속한 논리적 그룹

short_desc

text

파라미터에 대한 간단한 설명

extra_desc

text

보다 상세한 파라미터 설명

context

text

파라미터 값을 설정하는데 요구되는 조건 (다음 페이지 참고)

vartype

text

파라미터 Type (bool, enum, integer, real, or string)

source

text

현재 파라미터 값의 소스

min_val

text

파라미터에 허용되는 최소 값 (null for non-numeric values)

max_val

text

파라미터에 허용되는 최대 값 (null for non-numeric values)

enumvals

text[]

열거형(enum) 파라미터의 허용되는 값들 (null for non-enum values)

boot_val

text

파라미터를 설정하지 않을 경우 서버 기동 시 지정되는 값

reset_val

text

현재 세션에서 RESET 파라미터가 다시 설정되는 값

sourcefile

text

현재 적용되는 Configuration 파일 경로 및 파일명

(null 출력 : 다른 소스로부터 지정될 때, non-superuser에 의해서 확인 시)

sourceline

integer

해당 Configuration File에서 해당 파라미터가 있는 위치 (Line)

(null 출력 : 다른 소스로부터 지정될 때, non-superuser에 의해서 확인 시)



ㅇ CONTEXT of pg_settings

Value

Description

 internal

 - 직접적으로 값을 변경 할 수 없음

 - 서버를 다시 만들거나 initdb로 제공된 옵션을 바꾸어 변경 가능

 postmaster

 - 서버 기동 시 적용 변경 값 적용 가능

 - postgresql.conf 파일에서 변경하며 서버 재기동 시 적용됨

 sighup

 - 서버를 재기동하지 않고, postmaster에 의하여 현재 세션의 프로세스에 대해 변경
   적용
(Re-load)

 - postgresql.conf 파일에서 변경하고 SIGHUP 신호를 보냄으로써 변경 적용

 backend

 - 서버를 재 기동하지 않고, SIGHUP 이후 세션에 대해서만 변경 값이 적용됨 (Re-load)

 - postgresql.conf 파일에서 변경하고 SIGHUP 신호를 보냄으로써 변경 적용

 superuser

 - 서버를 재기동하지 않고, Superuser에 의해 트랜잭션이나 세션 단위로 변경 값 적용

 - SET 명령어를 통해 현재 세션들에 대해서 변경

   * is_local = true : 현재 트랜잭션들에 대해서 적용, false : 현재 세션들에 대해서 적용 

 user

 - 서버를 재 기동하지 않고, 모든 특정 User에 의해 해당 세션에 대해서 변경 값 적용

 - SET 명령어를 통해 해당 세션에 대해서 변경

* internal / postmaster / sighup / backend : 서버단위 적용

* superuser / user : DB,세션단위 적용


- sighup

$ pg_ctl reload [-s] [-D datadir]

edb=# SELECT pg_reload_conf();

$ kill -SIGHUP <pid>


- backend

$ pg_ctl reload [-s] [-D datadir]

edb=# SELECT pg_reload_conf();

$ kill -SIGHUP <pid>


- superuser

edb=# SELECT set_config('<param>', '<new_value>', is_local);

edb=# SET <param> TO <new_value> ;



by. 이은석(2014.06.11)