client_min_messages
(enum
)
클라이언트로 전송할 메시지 레벨을 제어한다. 유효 값은 DEBUG5
및
DEBUG4
, DEBUG3
, DEBUG2
,
DEBUG1
, LOG
, NOTICE
,
WARNING
, ERROR
, FATAL
,
PANIC
이다. 각 레벨에는 후속되는 모든 레벨이 포함된다.
후속 레벨일수록 메시지가 적게 전송된다. 기본값은 NOTICE
이다. LOG
는 여기서 log_min_messages와는 다른 랭크를 갖는다.
INFO
level messages are always sent to the client.
search_path
(string
)
이 변수는 스키마 이름을 사용하지 않는 간단한 이름으로 해당 개체(테이블, 자료형, 함수 등)를 지정한 경우 어느 스키마 안에 있는 것을 사용할지 지정한다. 서로 다른 스키마에 같은 이름의 개체가 있는 경우 이 변수 값으로 지정한 스키마들 가운데 제일 처음 발견된 것을 사용한다. 이렇게 찾았는데, 어디에도 해당 개체가 없다면, 그 개체는 스키마 이름을 지정해서 (점(.)으로 구분) 사용해야 한다.
search_path
에 대한 값은 스키마 이름을 쉼표로 구분한 목록이다.
스키마에 존재하지 않는 이름이거나, 사용자가 USAGE
권한이 없는 스키마 이름은 조용히 무시된다.
목록 항목 중 하나가 특수한 이름 $user
인 경우, 해당 스키마 및 사용자에게 USAGE
권한이 있으면 CURRENT_USER
가 리턴한 이름의 스키마는 대체된다.
(그 외에는 $user
가 무시된다.)
시스템 카탈로그 스키마 pg_catalog
는 경로에 있든 없든 항상 검색된다. 경로에 있을 경우 지정된 순서대로 검색된다. pg_catalog
가 경로에 없으면 경로 항목을 검색하기 전에 검색된다.
마찬가지로, 현재 세션의 임시 테이블 스키마 pg_temp_
은 존재할 경우 항상 검색된다.
nnn
pg_temp
별칭을 사용함으로써 경로에 명시적으로 나열할 수 있다.
경로에 나열하지 않으면 검색부터 된다(pg_catalog
를 검색하기도 전에).
그러나, 관계(테이블, 뷰, 시퀀스 등) 및 데이터 타입 이름에 대한 임시 스키마만 검색된다.
함수 또는 연산자 이름으로는 절대 검색되지 않는다.
특별한 타겟 스키마를 지정하지 않고 개체를 생성한 경우 search_path
에 명명된 첫 번째 유효 스키마에 배치된다.
검색 경로가 비어 있으면 에러가 리포트된다.
이 매개 변수의 기본값은 "$user", public
이다.
이 설정은 데이터베이스의 공유 사용(사용자에게 개인 스키마가 없고 모두 public
의 공유 사용인 경우), 개인 사용자별 스키마 및 이러한 것들의 조합을 지원한다.
전역적 또는 사용자별 기본 검색 경로 설정을 전환함으로써 다른 효과를 얻을 수도 있다.
For more information on schema handling, see 5.9절. In particular, the default configuration is suitable only when the database has a single user or a few mutually-trusting users.
검색 경로에서 현재 효과적인 값은 SQL 함수 current_schemas
(9.26절 참조)를 통해서 검사할 수 있다.
current_schemas
는 search_path
에 표시되는 항목이 해결되는 방법을 표시하므로 이것은 search_path
값을 검사하는 것과 다르다.
row_security
(boolean
)
This variable controls whether to raise an error in lieu of applying a
row security policy. When set to on
, policies apply
normally. When set to off
, queries fail which would
otherwise apply at least one policy. The default is on
.
Change to off
where limited row visibility could cause
incorrect results; for example, pg_dump makes that
change by default. This variable has no effect on roles which bypass
every row security policy, to wit, superusers and roles with
the BYPASSRLS
attribute.
For more information on row security policies, see CREATE POLICY.
default_table_access_method
(string
)
This parameter specifies the default table access method to use when
creating tables or materialized views if the CREATE
command does not explicitly specify an access method, or when
SELECT ... INTO
is used, which does not allow to
specify a table access method. The default is heap
.
default_tablespace
(string
)
이 변수는 CREATE
명령이 테이블스페이스를 명시적으로 지정하지 않는 경우 개체(테이블 및 인덱스)가 생성되는 기본 테이블스페이스를 지정한다.
값은 테이블스페이스의 이름 또는 현재 데이터베이스의 기본 테이블스페이스를 사용하여 지정하기 위한 비어 있는 string이다.
기존 테이블스페이스의 이름과 값이 일치하지 않으면 PostgreSQL이 자동으로 현재 데이터베이스의 기본 테이블스페이스를 사용한다.
기본값이 아닌 테이블스페이스가 지정되면 사용자는 CREATE
권한이 있어야 하며, 그렇지 않으면 생성 시도에 실패한다.
이 변수를 임시 테이블에는 사용되지 않으며, 대신 temp_tablespaces를 사용해야 한다.
이 변수는 데이터베이스 생성 시 사용되지 않는다. 기본적으로 새 데이터베이스는 복사되었던 템플릿 데이터베이스로부터 테이블스페이스 설정을 상속받는다.
If this parameter is set to a value other than the empty string
when a partitioned table is created, the partitioned table's
tablespace will be set to that value, which will be used as
the default tablespace for partitions created in the future,
even if default_tablespace
has changed since then.
테이블스페이스에 대한 자세한 내용은 22.6절을 참조 바란다.
temp_tablespaces
(string
)
이 변수는 CREATE
명령이 테이블스페이스를 명시적으로 지정하지 않는 경우 임시 개체(임시 테이블 및 임시 테이블의 인덱스)가 생성되는 테이블스페이스를 지정한다.
대형 데이터집합 정렬 같은 용도의 임시 파일도 이 테이블스페이스에서 생성된다.
값은 테이블스페이스의 이름 목록이다. 목록에서 이름이 2개 이상 있는 경우, 트랜잭션 내에서 연속 생성된 임시 개체가 목록에서 연속 테이블스페이스에 매치되는 것 외에는 PostgreSQL는 임시 개체를 생성할 때마다 목록에서 멤버를 임의로 선택한다. 목록에서 선택된 요소가 비어 있는 string인 경우 PostgreSQL이 현재 데이터베이스의 기본 테이블 스페이스를 자동으로 대신 사용한다.
사용자에게 CREATE
권한이 없는 테이블스페이스를 지정하는 것이므로, temp_tablespaces
가 인터랙티브하게 설정된 경우 존재하지 않는 테이블스페이스를 지정하는 것은 에러이다.
단, 사용자에게 CREATE
권한이 없는 테이블스페이스이므로, 이전에 설정된 값을 사용하는 경우 존재하지 않는 테이블스페이스는 무시된다.
특히, 이 규칙은 postgresql.conf
에 설정된 값을 사용하는 경우에 적용된다.
기본 값은, 현재 데이터베이스의 기본 테이블스페이스에서 모든 임시 개체가 생성되는 비어 있는 string이다. default_tablespace도 참조 바란다.
See also default_tablespace.
check_function_bodies
(boolean
)
이 매개 변수는 일반적으로 on이다. off
로 설정되면 CREATE FUNCTION 중에 함수 본문 string의 검증이 비활성화된다.
검증을 비활성화하면 검증 프로세스의 부작용이 예방되고 전방 참조 같은 문제로 인한 거짓 긍정이 방지된다.
다른 사용자를 위해 함수를 로딩하기 전에 이 매개 변수를 off
로 설정해야 한다.
pg_dump는 자동으로 off로 설정한다.
default_transaction_isolation
(enum
)
각 SQL 트랜잭션은 “read uncommitted” 또는 “read committed”, “repeatable read”, “serializable”의 격리 레벨을 갖고 있다. 이 매개 변수는 새 트랜잭션마다 기본 격리 레벨을 제어한다. 기본값은 “read committed”이다.
자세한 내용은 13장 및 SET TRANSACTION을 참고 바란다.
default_transaction_read_only
(boolean
)
읽기 전용 SQL 트랜잭션은 비 임시 테이블은 변경할 수 없다.
이 매개 변수는 새 트랜잭션마다 기본 읽기 전용 상태를 제어한다. 기본값은 off
이다(읽기/쓰기).
자세한 내용은 SET TRANSACTION을 참조 바란다.
default_transaction_deferrable
(boolean
)
serializable
격리 수준에서 실행 중인 경우 진행을 허용하기 전에 유예 가능한 읽기 전용 SQL 트랜잭션을 지연시킬 수 있다.
그러나 실행이 시작되면, 오버헤드가 발생하지 않고 직렬화를 보장하기 때문에 직렬화 코드는 동시 업데이트 때문에 강제 중단을 할 이유가 없어진다. 장기 실행되는 읽기 전용 트랜잭션에 적합하다.
이 매개 변수는 새 트랜잭션마다 유예 가능한 기본 상태를 제어한다.
이것은 현재 읽기 전용 트랜잭션에 아무런 효과가 없고, serializable
보다 낮은 격리 수준에서 작동되는 트랜잭션에는 효과가 없다. 기본값은 off
이다.
자세한 내용은 SET TRANSACTION을 참조 바란다.
session_replication_role
(enum
)
복제 관련 트리거 시작 및 현재 세션의 규칙을 제어한다.
이 변수를 설정하려면 슈퍼유저 권한이 필요하고, 따라서 이전에 캐시된 쿼리 플랜이 삭제된다. 가능한 값은 origin
(기본값), replica
및 local
이다.
The intended use of this setting is that logical replication systems
set it to replica
when they are applying replicated
changes. The effect of that will be that triggers and rules (that
have not been altered from their default configuration) will not fire
on the replica. See the ALTER TABLE clauses
ENABLE TRIGGER
and ENABLE RULE
for more information.
PostgreSQL treats the settings origin
and
local
the same internally. Third-party replication
systems may use these two values for their internal purposes, for
example using local
to designate a session whose
changes should not be replicated.
Since foreign keys are implemented as triggers, setting this parameter
to replica
also disables all foreign key checks,
which can leave data in an inconsistent state if improperly used.
statement_timeout
(integer
)
Abort any statement that takes more than the specified amount of time.
If log_min_error_statement
is set
to ERROR
or lower, the statement that timed out
will also be logged.
If this value is specified without units, it is taken as milliseconds.
A value of zero (the default) disables the timeout.
The timeout is measured from the time a command arrives at the server until it is completed by the server. If multiple SQL statements appear in a single simple-Query message, the timeout is applied to each statement separately. (PostgreSQL versions before 13 usually treated the timeout as applying to the whole query string.) In extended query protocol, the timeout starts running when any query-related message (Parse, Bind, Execute, Describe) arrives, and it is canceled by completion of an Execute or Sync message.
모든 세션에 영향을 줄 수 있으므로 postgresql.conf
에서 statement_timeout
을 설정하는 것은 권장하지 않는다.
lock_timeout
(integer
)
테이블, 인덱스, 행 또는 기타 데이터베이스 개체의 잠금을 획득하기 위해 대기한 시간이 지정된
이상 초과하면 문을 중단한다.
획득 시도별로 시간 제한이 개별적으로 적용된다.
이 제한은 명시적 잠금 요청(예: LOCK TABLE
또는 NOWAIT
하지 않은 SELECT
FOR UPDATE
) 및 암시적으로 획득한 잠금에 모두 적용된다.
설정값에 단위가 없으면 밀리세컨드로 간주한다.
0 값(기본값)은 이것을 해제한다.
statement_timeout
과 달리, 이 타임아웃은 잠금 대기 시에만 발생한다.
statement_timeout
이 0이 아닌 경우, 문 타임아웃이 항상 먼저 트리거되므로 lock_timeout
을 동일한 값이나 큰 값으로 설정하는 것은 무의미하다.
모든 세션에 영향을 줄 수 있으므로 postgresql.conf
에서 lock_timeout
을 설정하는 것은 권장되지 않는다.
idle_in_transaction_session_timeout
(integer
)
Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds. This allows any locks held by that session to be released and the connection slot to be reused; it also allows tuples visible only to this transaction to be vacuumed. See 24.1절 for more details about this.
The default value of 0 disables this feature.
vacuum_freeze_table_age
(integer
)
VACUUM
은 어떤 테이블의 pg_class
.relfrozenxid
칼럼값으로
계산된 나이가 이 설정에서 지정된 나이보다 많으면
강제 테이블 스캔을 수행한다.
An aggressive scan differs from
a regular VACUUM
in that it visits every page that might
contain unfrozen XIDs or MXIDs, not just those that might contain dead
tuples.
기본값은 1억 5천만 트랜잭션이다.
사용자는 이 값을 0 ~ 20억 중 아무거나 설정할 수 있지만
크게 지정해도
VACUUM
은 유효 값을 autovacuum_freeze_max_age 값을 기준으로
그 값의 95%로 강제 조정한다.
이렇기 때문에, 사용자가 직접 실행하는 VACUUM
작업을
정기적으로 하면, 트랜잭션 ID 겹침 방지 작업을 하는 autovacuum 작업 전에,
테이블 나이가 줄어들게 된다.
자세한 내용은 24.1.5절에서 설명한다.
vacuum_freeze_min_age
(integer
)
테이블 스캔 중 행 버전 동결 여부를 결정할 때 VACUUM
이 사용해야 하는 컷오프 연령(트랜잭션에서)을 지정한다. 기본값은 5천만 트랜잭션이다.
사용자는 이 값을 0 ~ 10억 중 아무거나 설정할 수 있지만 VACUUM
은 유효 값을 autovacuum_freeze_max_age의 절반으로 슬며시 제한하므로 강제 autovacuum들 사이에 시간이 불합리하게 짧은 경우는 없다.
자세한 내용은 24.1.5절을 참조 바란다.
vacuum_multixact_freeze_table_age
(integer
)
VACUUM
은 테이블의 pg_class
.relminmxid
필드가 이 설정에서 지정된 연령에 도달한 경우 강제 테이블 스캔을 수행한다.
An aggressive scan differs from
a regular VACUUM
in that it visits every page that might
contain unfrozen XIDs or MXIDs, not just those that might contain dead
tuples.
기본값은 1억 5천만 multixact이다.
사용자는 이 값을 0 ~ 20억 중 아무거나 설정할 수 있지만
크게 지정해도
VACUUM
은 유효 값을
autovacuum_multixact_freeze_max_age 값을 기준으로
그 값의 95%로 강제 조정한다.
이렇기 때문에, 사용자가 직접 실행하는 VACUUM
작업을
정기적으로 하면, 트랜잭션 ID 겹침 방지 작업을 하는 autovacuum 작업 전에,
테이블 나이가 줄어들게 된다.
자세한 내용은 24.1.5.1절을 참조 바란다.
vacuum_multixact_freeze_min_age
(integer
)
테이블 스캔 중 행 multixact ID를 후속 트랜잭션 ID 또는 multixact ID로 교체 여부를 결정할 때 VACUUM
이 사용해야 하는 컷오프 연령(multixact에서)을 지정한다.
기본값은 5백만 multixact이다. 사용자는 이 값을 0 ~ 10억 중 아무거나 설정할 수 있지만 VACUUM
은 유효 값을 autovacuum_multixact_freeze_max_age의 절반으로 슬며시 제한하므로 강제 autovacuum들 사이에 시간이 불합리하게 짧은 경우는 없다.
자세한 내용은 24.1.5.1절을 참조 바란다.
bytea_output
(enum
)
타입 bytea
타입의 값에 대한 출력 형식을 설정한다. 유효 값은 hex
(기본값) 및 escape
(전형적인 PostgreSQL 형식)이다.
자세한 내용은 8.4절을 참조 바란다.
bytea
타입은 이 설정과 무관하게 입력에서 항상 두양쪽 형식을 수용한다.
xmlbinary
(enum
)
바이너리 값이 XML로 인코딩되는 방법을 설정한다.
이것은 예를 들면 bytea
값이 xmlelement
또는 xmlforest
함수에 의해 XML로 변환되는 경우에 적용된다.
가능한 값은, XML 스키마 표준에서 정의된 base64
및 hex
이다.
기본값은 base64
이다. XML 함수에 대한 자세한 내용은 9.15절을 참조 바란다.
여기서 선택한 것을 실제로 선호도의 문제로, 클라이언트 애플리케이션에서 가능한 제약에 의해서만 제한된다. 양쪽 방법은 hex 인코딩이 base64 인코딩보다 다소 크더라도 가능한 모든 값을 지원한다.
xmloption
(enum
)
XML과 문자 string 값 사이의 변환 시 DOCUMENT
또는 CONTENT
가 암시적인지를 설정한다.
이것에 대한 설명은 8.13절을 참조 바란다. 유효 값은 DOCUMENT
및 CONTENT
이다. 기본값은 CONTENT
이다.
SQL 표준에 따라 이 옵션을 설정하는 명령은 다음과 같다.
SET XML OPTION { DOCUMENT | CONTENT };
이 구문은 PostgreSQL에서도 사용할 수 있다.
gin_pending_list_limit
(integer
)
GIN 인덱스 빠른 변경
기능이 활성되었을 경우
GIN 인덱스 펜딩 목록 최대 크기를 지정한다.
펜딩 목록이 이 크기보다 커지면, 일괄 작업으로
원 GIN 인덱스 자료에 반영하고 이 목록은 비운다.
설정값에 단위가 없으면, kB로 간주한다.
기본값은 4 MB이다. 이 값은 인덱스의 저장 매개 변수 설정으로
개별 인덱스 별로 따로 설정할 수 있다.
이 부분에 대해서는 66.4.1절과
66.5절에서 보다 자세히 다룬다.
DateStyle
(string
)
날짜 및 시간 값의 표시 형식과, 애매한 날짜 입력 값을 해석하는 규칙을 설정한다.
역사적인 이유로, 이 변수는 두 가지 독립적인 요소인 출력 형식 명세(ISO
또는
Postgres
, SQL
, German
)와 연/월/일 순서의 입력/출력 명시(DMY
또는 MDY
, YMD
)로 환경 설정된다.
이것은 별개로 설정하거나 함께 설정할 수 있다. 키워드 Euro
및 European
은 DMY
의 동의어이고, 키워드 US
, NonEuro
및 NonEuropean
은 MDY
의 동의어이다.
자세한 내용은 8.5절을 참조 바란다.
내장된 기본값은 ISO, MDY
이지만 initdb는 선택된 lc_time
로케일(locale)의 동작에 해당되는 설정으로 환경 설정 파일을 초기화한다.
IntervalStyle
(enum
)
간격 값에 대한 표시 형식을 설정한다. sql_standard
는 SQL 표준 간격 리터럴과 일치하는 출력을 생성한다.
postgres
값(기본값)은 datestyle 매개 변수가 ISO
로 설정된 경우 PostgreSQL 8.4 이전 릴리스와 일치하는 출력을 생성한다.
postgres_verbose
값은 DateStyle
매개 변수가 비 ISO
출력으로 설정된 경우 PostgreSQL 8.4 이전 릴리스와 일치하는 출력을 생성한다.
iso_8601
값은 ISO 8601의 section 4.4.3.2에 정의된 “format with designators” 시간 간격과 일치하는 출력을 생성한다.
IntervalStyle
매개 변수 또한 애매한 간격 입력을 해석하는 데 영향을 준다. 자세한 내용은 8.5.4절을 참조 바란다.
TimeZone
(string
)
타임스탬프를 표시 및 해석하기 위한 시간대를 설정한다.
내장 기본값은 GMT
이지만, 일반적으로 postgresql.conf
에 오버라이드되고 initdb는 시스템 환경에 해당되는 곳에 설정을 설치한다.
자세한 내용은 8.5.3절을 참조 바란다.
timezone_abbreviations
(string
)
서버에서 datetime 입력으로 수용되는 시간대 약어 컬렉션을 설정한다.
기본값은, 거의 전세계적으로 적용되는 컬렉션인 'Default'
이며, 특정 설치용으로 정의할 수 있는 'Australia'
와 'India'
및 기타 컬렉션도 있다.
자세한 내용은 B.4절을 참조 바란다.
extra_float_digits
(integer
)
This parameter adjusts the number of digits used for textual output of
floating-point values, including float4
, float8
,
and geometric data types.
If the value is 1 (the default) or above, float values are output in
shortest-precise format; see 8.1.3절. The
actual number of digits generated depends only on the value being
output, not on the value of this parameter. At most 17 digits are
required for float8
values, and 9 for float4
values. This format is both fast and precise, preserving the original
binary float value exactly when correctly read. For historical
compatibility, values up to 3 are permitted.
If the value is zero or negative, then the output is rounded to a
given decimal precision. The precision used is the standard number of
digits for the type (FLT_DIG
or DBL_DIG
as appropriate) reduced according to the
value of this parameter. (For example, specifying -1 will cause
float4
values to be output rounded to 5 significant
digits, and float8
values
rounded to 14 digits.) This format is slower and does not preserve all
the bits of the binary float value, but may be more human-readable.
The meaning of this parameter, and its default value, changed in PostgreSQL 12; see 8.1.3절 for further discussion.
client_encoding
(string
)
클라이언트 측 인코딩(문자 집합)을 설정한다. 기본값은 데이터베이스 인코딩을 사용하는 것이다. PostgreSQL 서버에서 지원하는 문자 집합은 23.3.1절에 나와 있다.
lc_messages
(string
)
메시지가 표시되는 언어를 설정한다. 허용되는 값은 시스템에 따라 다르다. 자세한 내용은 23.1절을 참조 바란다. 변수가 비어 있는 string으로 설정된 경우(기본값), 값은 시스템 의존적인 방법으로 서버의 실행 환경으로부터 상속된다.
일부 시스템에서 이 로케일(locale) 카테고리는 존재하지 않는다. 이 변수의 설정은 계속 유효하지만 아무런 효과는 없다. 또한 원하는 언어로 번역된 메시지가 존재하지 않을 수도 있다. 이런 경우 영어 메시지를 확인할 수 있다.
서버 로그 및 클라이언트로 전송되는 메시지에 영향을 줄 수 있고 부적절한 값이 서버 로그의 가독성을 해칠 수 있으므로 슈퍼유저만 이 설정을 변경할 수 있다.
lc_monetary
(string
)
통화 형식 지정에 사용되는 로케일(locale)을 지정한다. 예를 들면, 함수의 to_char
계열을 사용한다.
허용되는 값은 시스템에 따라 다르다. 자세한 내용은 23.1절을 참조 바란다.
변수가 비어 있는 string으로 설정된 경우(기본값), 값은 시스템 의존적인 방법으로 서버의 실행 환경으로부터 상속된다.
lc_numeric
(string
)
숫자 형식 지정에 사용되는 로케일(locale)을 지정한다. 예를 들면, 함수의 to_char
계열을 사용한다.
허용되는 값은 시스템에 따라 다르다. 자세한 내용은 23.1절을 참조 바란다.
변수가 비어 있는 string으로 설정된 경우(기본값), 값은 시스템 의존적인 방법으로 서버의 실행 환경으로부터 상속된다.
lc_time
(string
)
날짜 및 시간 형식 지정에 사용되는 로케일(locale)을 지정한다. 예를 들면, 함수의 to_char
계열을 사용한다.
허용되는 값은 시스템에 따라 다르다. 자세한 내용은 23.1절을 참조 바란다.
default_text_search_config
(string
)
환경 설정을 지정하는 명시적 인수 없이, 텍스트 검색 함수의 변형에서 사용되는 텍스트 검색 환경 설정을 선택한다.
자세한 내용은 12장을 참조 바란다.
내장된 기본값은 pg_catalog.simple
이지만 로케일(locale) 일치 환경 설정을 식별할 수 있는 경우 initdb는 선택된 lc_ctype
로케일(locale)에 해당되는 설정으로 환경 설정 파일을 초기화한다.
추가 기능을 로드하거나 성능상 이점을 위해 몇 가지 설정을 서버로의 공유 라이브러리 사전 로드에 사용할 수 있다.
예를 들면, '$libdir/mylib'
설정은 mylib.so
(또는 일부 플랫폼에서, mylib.sl
)가 설치 표준 라이브러리 디렉터리로부터 사전 로드되게 한다. 설정 간 차이라면 효과가 나타나는 시간과, 변경 시 필요한 권한이다.
PostgreSQL 프로시저 언어 라이브러리는 이와 같은 방식으로 사전 로드할 수 있으며, 일반적으로 '$libdir/plXXX'
구문이 사용된다.
여기서 XXX
는 pgsql
, perl
, tcl
또는 python
이다.
각 매개 변수별로 2개 이상의 라이브러리를 로드하는 경우 이름은 쉼표로 구분해야 한다. 모든 라이브러리 이름은 큰따옴표를 사용하지 않는 한 소문자로 변환된다.
특별히 PostgreSQL과 함께 사용하려는 공유 라이브러리만 이와 같은 방식으로 로드할 수 있다.
모든 PostgreSQL 지원 라이브러리는 호환성 보장을 검사하는 “magic block”이 있다.
이러한 이유로 비 PostgreSQL 라이브러리는 이 방식으로 로드할 수 없다.
이를 위해 LD_PRELOAD
같은 운영 체제 기능을 사용할 수는 있다.
일반적으로 해당 모듈을 로드하는 권장 방법은 특정 모듈에 대한 문서를 참조 바란다.
local_preload_libraries
(string
)
This variable specifies one or more shared libraries that are to be preloaded at connection start. It contains a comma-separated list of library names, where each name is interpreted as for the LOAD command. Whitespace between entries is ignored; surround a library name with double quotes if you need to include whitespace or commas in the name. The parameter value only takes effect at the start of the connection. Subsequent changes have no effect. If a specified library is not found, the connection attempt will fail.
이 옵션은 사용자가 설정할 수 있다. 따라서 로드된 라이브러리는 설치의 표준 라이브러리 디렉터리의 plugins
서브 디렉터리에 나타나는 것으로 한정된다.
(“안전한” 라이브러리만 설치되게 하는 것은 데이터베이스 관리자의 책임이다.)
예를 들면, $libdir/plugins/mylib
같이 local_preload_libraries
의 항목은 이 디렉터리를 명시적으로 지정할 수 있으며,
또는 라이브러리 이름 mylib
는 $libdir/plugins/mylib
와 효과가 동일할 수 있다.
슈퍼유저 이외에 사용자가 이러한 방식으로 사용할 수 있도록 모듈이 특수하게 디자인되어 있지 않는 한 이것은 일반적으로 올바른 설정 방법이 아니다. 대신 session_preload_libraries를 찾아 보기 바란다.
session_preload_libraries
(string
)
This variable specifies one or more shared libraries that are to be preloaded at connection start. It contains a comma-separated list of library names, where each name is interpreted as for the LOAD command. Whitespace between entries is ignored; surround a library name with double quotes if you need to include whitespace or commas in the name. The parameter value only takes effect at the start of the connection. Subsequent changes have no effect. If a specified library is not found, the connection attempt will fail. Only superusers can change this setting.
이 기능은 명시적 LOAD
명령 없이 디버깅 또는 성능 평가 라이브러리가 특정 세션에 로드되도록 한다.
예를 들면, ALTER ROLE SET
를 사용하여 이 매개 변수를 설정하면 주어진 사용자 이름 하의 모든 세션에 대해 auto_explain의 활성화가 가능하다.
또한 이 매개 변수는 서버 재시작 없이 변경 가능하므로(단, 세션을 새로 시작하는 경우에만 효과가 있다), 새 모듈을 모든 세션에 적용해야 하더라도 이렇게 추가하는 것이 쉽다.
shared_preload_libraries와 달리, 세션을 먼저 사용한 경우보다 세션 시작 시 라이브러리를 로딩하는 것이 큰 장점은 없다. 그래도, 연결 풀링을 사용하는 경우에는 장점이 약간 있기는 하다.
shared_preload_libraries
(string
)
이 변수는 서버 시작 시에 사전 로드할 하나 이상의 공유 라이브러리를 쉼표를 사용하여 지정한다. 이 매개 변수는 서버 시작 시에만 설정 가능하다. 지정된 라이브러리를 찾지 못하면 서버 시작이 실패한다.
일부 라이브러리는 공유 메모리 할당, 경량 잠금 예약 또는 백그라운드 worker 시작 같은 postmaster 시작 시에만 일어날 수 있는 특정한 명령을 수행해야 한다. 해당 라이브러리는 이 매개 변수를 통해 서버 시작 시에만 로드해야 한다. 자세한 내용은 각 라이브러리의 문서를 참조 바란다.
다른 라이브러리는 사전 로드할 수도 있다. 공유 라이브러리를 사전 로드해서 라이브러리를 먼저 사용하는 경우 라이브러리 시작 시간은 라이브러리가 처음 사용될 때 바뀐다. 단, 해당 프로세스가 라이브러리를 사용하지 않더라도 각각의 새로운 서버 프로세스 시작 시간이 약간 늘어날 수 있다. 따라서 이 매개 변수는 대부분의 세션에서 사용되는 라이브러리인 경우에만 권장된다. 또한 이 매개 변수를 변경하면 서버를 재시작해야 하므로 단기간 디버깅 시에는 설정이 바람직하지 않다. 대신 session_preload_libraries를 사용해야 한다.
Windows 호스트에서 서버 시작 시 라이브러리를 사전 로드하는 것은 각각의 새 서버 프로세스를 시작하는 데 필요한 시간을 줄이지 않는다.
각 서버 프로세스는 모든 사전 로드 라이브러리를 리로드한다.
그러나, postmaster 시작 시에 명령을 수행해야 하는 라이브러리의 경우 shared_preload_libraries
는 Windows 호스트에 여전히 유용하다.
jit_provider
(string
)
This variable is the name of the JIT provider library to be used
(see 31.4.2절).
The default is llvmjit
.
This parameter can only be set at server start.
If set to a non-existent library, JIT will not be available, but no error will be raised. This allows JIT support to be installed separately from the main PostgreSQL package.
dynamic_library_path
(string
)
동적 로드 가능한 모듈을 열어야 하고 CREATE FUNCTION
또는 LOAD
명령에서 지정된 파일 이름에 디렉터리 성분이 없는 경우(예: 이름에 슬래시가 없음) 시스템은 필요한 파일에 대한 이 경로를 검색한다.
dynamic_library_path
에 대한 값은 콜론(또는 Windows에서 세미콜론)으로 구분된 절대 디렉터리 경로 목록이어야 한다.
목록 요소가 특수 문자 $libdir
로 시작되는 경우 컴파일된 PostgreSQL 패키지 라이브러리 디렉터리가 $libdir에 대체된다.
이것은 표준 PostgreSQL 배포에 의해 제공된 모듈이 설치되는 경우에 해당된다.
(이 디렉터리의 이름을 찾으려면 pg_config --pkglibdir
을 사용해야 한다.) 예를 들면:
dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
또는 Windows 환경에서: or, in a Windows environment:
dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
이 매개 변수의 기본값은 '$libdir'
이다. 값이 비어 있는 string으로 설정되면, 자동 경로 검색이 해제된다.
이 매개 변수는 런타임 시 변경될 수 있지만 해당 설정은 클라이언트 연결이 끝날 때까지만 유지되므로 이 방법은 개발 단계에서 따로 준비해야 한다.
권장 방법은 postgresql.conf
환경 설정 파일에서 이 매개 변수를 설정하는 것이다.
gin_fuzzy_search_limit
(integer
)
GIN 인덱스 스캔에 의해 리턴된 설정 크기에 대한 상한. 자세한 내용은 66.5절을 참조 바란다.