客户端连接默认值(CLIENT CONNECTION DEFAULTS)类别参数
本文档介绍了系统配置参数中 客户端连接默认值类别的相关参数。
注意!
为确保系统稳定与安全,请务必谨慎手动修改相关参数。
语句行为(Statement Behavior)
bytea_output
设置 bytea
类型值的输出格式。
- 支持选项是
hex
(默认)和escape
(传统的 PostgreSQL 格式)。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | hex | hex / escape | segments;session;reload |
check_function_bodies
这个参数控制了在使用 CREATE FUNCTION
语句创建函数时是否检查函数体的语法和引用。
- 此选项默认开启。
- 如果关闭此选项,那么在函数创建时不会检查函数体,这可能有助于避免一些由于函数体引用了尚未创建的对象而导致的问题。但是,这也意味着如果函数体有语法错误,那么在函数创建时不会被发现,只有在函数被调用时才会报错。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | master;session;reload |
client_min_messages
控制被发送给客户端的消息级别。
- 注意:其中
log
值的级别在此参数中与在log_min_messages
参数中是不同的。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | notice | debug5 / debug4 / debug3 / debug2 / debug1 / log / notice / warning / error 每个级别都包括其后的所有级别 级别越靠后,被发送的消息越少 |
master;session;reload |
default_tablespace
这个变量指定当一个 CREATE
命令没有显式指定一个表空间时,创建对象(表和索引)的默认表空间。
- 它还决定了指导未来分区的分区关系的表空间。
- 如果该值为空字符串,则会指定当前数据库为默认表空间。如果该值与现有表空间名字匹配,且有
CREATE
的权限,则设置成功,否则会自动指定当前数据库为默认表空间。 - 这个变量不被用于临时表,对临时表会使用temp_tablespaces。
- 当创建数据库时也会使用这个变量。默认情况下,一个新数据库会从它的模板数据库继承其表空间设置。
- 有关表空间的更多的信息,请见 CREATE TABLESPACE。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | master;session;reload |
default_transaction_read_only
是否令每个新事务只拥有读权限。
- 只读的 SQL 事务不能修改非临时表。
- 默认是
off
,即同时给予读、写权限。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload |
gin_fuzzy_search_limit
GIN 索引返回的集合尺寸的软上限。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ INT_MAX | master;session;reload |
gin_pending_list_limit
设置 fastupdate
被启用时,可以使用的 GIN 索引的待处理列表的最大尺寸。
- 如果该列表增长到超过这个最大尺寸,会通过批量将其中的项移入索引的主 GIN 数据结构来清理列表。
- 可以通过更改索引的存储参数来为个别 GIN 索引覆盖这个设置。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 4096 | 64 ~ (INT_MAX/1024) | master;session;reload |
gp_vmem_idle_resource_timeout
如果数据库会话空闲的时间超过指定的时间(毫秒),则会话将释放系统资源(例如共享内存),但仍保持与数据库的连接。
- 这允许一次性地接入到数据库更多并发连接。
- 如设置值为
0
,则代表着禁用此功能。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 18000 | 0 ~ INT_MAX | master;system;reload |
idle_in_transaction_session_timeout
终止任何已经闲置超过这个参数所指定时间量的打开事务的会话。
- 这使得该会话所持有的任何锁被释放,并且其所持有的连接槽可以被重用,使只对这个事务可见的元组可以被清理。
- 默认值为
0
,即禁用超时。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ INT_MAX | master;session;reload |
lc_collate
报告完成文本数据排序的区域设置。
- 初始化 YMatrix 数据库集群时确定该值。
默认值 | 取值范围 | 设置分类 |
---|---|---|
系统依赖 | read only |
lc_ctype
报告确定字符分类的区域设置。
- 初始化 YMatrix 数据库集群时确定该值。
默认值 | 取值范围 | 设置分类 |
---|---|---|
系统依赖 | read only |
lock_timeout
如果任何语句在试图获取表、索引、行或其他数据库对象上的锁时等到超过此参数指定的时间量,该语句将被中止。
- 该时间限制独立地应用于每一次锁获取尝试。该限制会应用到显式锁定请求(如
LOCK TABLE
或不带NOWAIT
的SELECT FOR UPDATE
)和隐式获得的锁。 - 与
statement_timeout
不同,这个超时只在等待锁时发生。 - 注意:如果
statement_timeout
为非零,设置lock_timeout
为相同或更大的值没有意义,因为事务超时将总是第一个被触发。 - 如果
log_min_error_statement
被设置为error
或更低,超时的语句将被记录。 - 我们不推荐在
postgresql.conf
中设置lock_timeout
,因为它会影响所有会话。 - 默认值为
0
,即禁用超时。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ INT_MAX | master;session;reload |
row_security
这个变量控制是否以抛出一个错误来代替应用一条行安全性策略。
- 在设置为
on
时,策略正常应用;在设置为off
时,只要有至少一条策略被应用则查询就会失败。 - 受限的行可见性会导致不正确的结果时,可将其改成
off
。pg_dump
默认会做这种更改。 - 这个变量对于能绕过每一条行安全性策略的角色(即超级用户和具有
BYPASSRLS
属性的角色)没有效果。 - 更多关于行安全性策略的信息请见 CREATE POLICY。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | master;system;restart |
search_path
当一个对象(表、数据类型、函数等)被用一个无模式限定的简单名称引用时,此参数指定搜索该对象的模式顺序。
- 当在不同模式中有同名对象时,将使用第一个在搜索路径中被找到的对象。
- 一个不属于搜索路径中任何一个模式的对象只能通过用限定名(带点号)指定包含它的模式来引用。
search_path
的值必需是一个逗号分隔的模式名列表。任何不是一个已有模式的名字的名称,或者是一个用户不具有USAGE
权限的模式,将被没有提醒地直接忽略。- 如果列表项之一是特殊名
$user
,则具有被CURRENT_USER
返回的名字的模式将取代这个特殊名。如果有这样一个特殊名模式,那么该用户便具有该模式的 USAGE 权限(如果没有,$user
会被忽略)。 - 不管
pg_catalog
是否在搜索路径中被提及系统目录模式,它总是会被搜索。如果它在路径中被提及,那么它将被按照路径指定的顺序搜索。如果pg_catalog
不在路径中,则它将在任何路径项之前被搜索。 - 同样,当前会话的临时表模式
pg_temp_nnn
也总是被搜索(如果存在)。它可以在路径中通过使用别名pg_temp
显式列出。如果在路径中没有列出,那么会首先对它进行搜索(甚至是在pg_catalog
之前)。然而,临时模式只被用来搜索关系(表、视图、序列等)和数据类型名。它从不用于搜索函数或操作符名。 - 当对象创建时没有指定一个特定目标模式,它们将被放置在
search_path
中第一个合法模式中。 - 如果搜索路径为空将报告一个错误。
- 这个参数的缺省值是
"$user", public
。这种设置支持数据库(其中没有用户拥有私有模式,并且所有人共享使用public
模式),每个用户的私有模式,以及前两者组合的共享使用。其它效果可以通过全局或者针对每个用户修改默认搜索路径设置获得。 - 只有当数据库只有一个用户或者有少数的相互信任的用户时,默认配置是合适的。
- 搜索路径的当前有效值可以通过 SQL 函数
current_schemas
检查。它和检查search_path
的值不太一样,因为current_schemas
显示出现在search_path
中的项如何被解析。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | "$user", public | 以逗号分隔的模式名称列表 | master;session;reload |
session_replication_role
为当前会话控制复制相关的触发器和规则的触发。
- 需要超级用户权限才能设置这个变量,并且会导致丢弃任何之前缓存下来的查询计划。
- 这个设置的预期用途是由逻辑复制系统在应用所复制的更改时,将它设置为 replica。其效果将是触发器和规则(没有对其默认配置做修改)在复制机上将不会被触发。更多信息请参考 ALTER TABLE 的子句
ENABLE TRIGGER
以及ENABLE RULE
。 - YMatrix 在内部会把设置
origin
和local
同样对待。第三方复制系统可能会把这两个值用于其内部目的,例如把local
用来标出一个不应复制其更改的会话。 - 因为外键被实现为触发器,将这个参数设置为
replica
还会禁用所有的外键检查。如果使用不当,可能会让数据处于一种不一致的状态。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | origin | origin / replica / local | segments;session;reload;superuser |
statement_timeout
中止任何使用了超过指定时间量(毫秒数)的语句。
- 如果
log_min_error_statement
被设置为error
或更低,语句如果超时也会被记录。 - 超时从命令到达服务器的时间开始计算,一直到它被服务器完成为止。在扩展查询协议中,当任何与查询相关的消息(解析、绑定、执行、描述)到达时,超时就开始运行,并且可以通过执行完成或同步消息来取消超时。
- 我们不推荐在
postgresql.conf
中设置此参数,因为它会影响所有会话。 - 默认值为
0
,即禁用超时。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ INT_MAX | master;session;reload |
temp_tablespaces
当 CREATE
命令未明确指定表空间时,指定要在其中创建临时对象(临时表和临时表上的索引)的表空间。
- 这些表空间还可以包含用于大型数据集排序等目的的临时文件。
- 该值是以逗号分隔的表空间名称列表。当列表包含多个表空间名称时,YMatrix 会在每次创建临时对象时随机选择一个列表成员。
- 一个例外适用于事务,其中连续创建的临时对象被放置在列表中的连续表空间中。如果列表的选定元素是空字符串,YMatrix 会自动使用当前数据库的默认表空间。
- 以交互方式设置
temp_tablespaces
时,避免指定不存在的表空间或用户确实具有CREATE
权限的表空间。对于非超级用户,超级用户必须授予他们对临时表空间的CREATE
权限。当使用先前设置的值(例如postgresql.conf
中的值)时,不存在的表空间将被忽略,用户缺少CREATE
的表空间也是如此特权。 - 默认值为空字符串,这会导致在当前数据库的默认表空间中创建所有临时对象。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 一个或多个表空间名称 | master;session;reload |
vacuum_cleanup_index_scale_factor
指定在之前的统计信息收集过程中,计数到的堆元组总数的一个分数,插入不超过这一数量所代表的元组不会导致 VACUUM
清理阶段的索引扫描。
- 这个设置当前仅适用于 B-tree 索引。
- 如果没有元组从堆中删除,则当至少满足下列条件之一时,在 VACUUM 清理阶段仍会扫描 B-tree 索引:索引统计信息过时,或者索引中包含在清理时可回收的已删除页。
- 如果新近插入的元组数占上次统计信息收集时检测到的堆元组总数的比例超过
vacuum_cleanup_index_scale_factor
,则认为索引信息已经过时。 - 堆元组的总数被存放在索引的元页中。注意:直到
VACUUM
找不到死亡元组之前,元页中都不包括这个数据。因此只有在第二次以及之后的 VACUUM 周期检测不到死亡元组时,清理阶段的 B-tree 索引扫描才能被跳过。 - 当
vacuum_cleanup_index_scale_factor
被设置为0
时,在VACUUM
清理期间不会跳过索引扫描。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
floating point | 0.1 | 0 ~ 10000000000 | segments;session;reload |
vacuum_freeze_min_age
指定 VACUUM 在扫描表时决定是否用 FrozenXID 替换事务 ID 时应使用的截止年龄(在事务中)。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 50000000 | 0 ~ 100000000000 | segments;system;restart |
vacuum_freeze_table_age
当表的 pg_class.relfrozenxid
域达到该设置指定的年龄时,VACUUM
会执行一次激进的扫描。
- 激进的扫描与常规
VACUUM
的不同在于它会访问每一个可能包含未冻结 XID 或者 MXID 的页面,而不只是那些可能包含死亡元组的页面。 - 在表上启动一次反回卷自动清理之前,定期手动
VACUUM
是有机会被执行的。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 150000000 | 0 ~ 200000000 | segments;session;reload |
vacuum_multixact_freeze_min_age
指定 VACUUM
在扫描表时用来决定是否把组合事务 ID 替换为一个更新的事务 ID 或组合事务 ID 的切断年龄(以组合事务计)。
- 在强制执行的自动清理之间不会有过短的时间间隔。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 5000000 | 0 ~ 100000000 | segments;session;reload |
vacuum_multixact_freeze_table_age
如果表的 pg_class.relminmxid
域超过了这个设置指定的年龄,VACUUM
会执行一次激进的扫描。
- 激进的扫描与常规
VACUUM
的区别在于它会访问每一个可能包含未冻结 XID 或者 MXID 的页面,而不是只扫描那些可能包含死亡元组的页面。 - 在表上启动一次反回卷自动清理之前,定期手动
VACUUM
是有机会被执行的。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 150000000 | 0 ~ 200000000 | segments;session;reload |
区域和格式化(Locale and Formatting)
client_encoding
设置客户端编码(字符集)。
- 默认使用数据库编码。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | SQL_ASCII | 支持的字符集 | master;session;reload |
datestyle
设置日期和时间值的显示格式,以及解释有歧义的日期输入值的规则。
- 由于历史原因, 这个变量包含两个独立的部分:输出格式声明(
ISO
、Postgres
、SQL
或German
)、 输入/输出的年/月/日顺序(DMY
、MDY
或YMD
)。这些可以被独立设置或者一起设置。关键字Euro
和European
是DMY
的同义词;关键字US
、NonEuro
和NonEuropean
是MDY
的同义词。 - 默认值是
ISO, MDY
,但是initdb
将用对应于选中的lc_time
区域行为的设置初始化配置文件。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | iso, mdy | <输出格式声明>,<输入/输出的年/月/日顺序> | master;system;restart |
default_text_search_config
选择文本搜索功能的那些变体使用的文本搜索配置,这些变体没有指定配置的显式参数。
- 默认值是
pg_catalog.simple
,但是如果能够标识一个匹配区域的配置,initdb
将用对应于选中的lc_ctype
区域的设置初始化配置文件。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | pg_catalog.english | 文本搜索配置的名称 | master;session;reload |
extra_float_digits
这个参数用于调整浮点值显示的位数,包括 float4
,float8
以及几何数据类型。
- 如果值为 1(默认值)或更高,浮点值被输出为最短的精度格式。实际生成的位数只取决于输出的值,而不取决于此参数的值。
float8
值最多需要 17 位数字,float4
值最多需要 9 位数字。- 这种格式既快速又精确,在正确读取时精确地保留了原始的二进制浮点值。
- 为了历史兼容性,允许的值最大为
3
。 - 如果值为
0
或负值,则输出四舍五入为给定的十进制精度。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 1 | -15 ~ 3 | master;session;reload |
intervalstyle
设置间隔值的显示格式。
- 值
sql_standard
将产生匹配 SQL 标准间隔文本的输出 - 值
iso_8601
将生成与 ISO 8601 定义的指示符匹配时间间隔格式的输出。 intervalstyle
参数也可以影响对有歧义的间隔输入的解释。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | postgres | sql_standard / postgres / iso_8601 / postgres_verbose | master;session;reload |
lc_messages
设置消息显示的语言。
- 可用的语言环境取决于操作系统安装的内容 —— 即使用
locale -a
列出的语言环境。 - 如果这个变量被设置为空字符串(默认),那么该值将以一种系统相关的方式从服务器的执行环境中继承。
- 在一些系统上,这个区域分类并不存在。仍然可以设置这个变量,只是不会有任何效果。同样,所期望语言的翻译消息也可能不存在。在这种情况下,你将仍然继续看到英文消息。
- 只有超级用户可以改变这个设置,因为它同时影响发送到服务器日志和客户端的消息。一个不正确的值可能会降低服务器日志的可读性。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 使用 locale -a 列出的语言环境 |
segments;system;restart;superuser |
lc_monetary
设置用于格式化货币金额的区域设置,例如使用 to_char
系列函数。
- 可用的语言环境取决于操作系统安装的内容 —— 即使用
locale -a
列出的语言环境。 - 默认值继承自服务器的执行环境。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 使用 locale -a 列出的语言环境 |
segments;system;restart |
lc_numeric
设置用于格式化数字的语言环境,例如使用 to_char
系列函数。
- 可用的语言环境取决于操作系统安装的内容 —— 即使用
locale -a
列出的语言环境。 - 默认值继承自服务器的执行环境。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 使用 locale -a 列出的语言环境 |
segments;system;restart |
lc_time
设置用于格式化日期和时间的区域,例如使用 to_char
系列函数。
- 可用的语言环境取决于操作系统安装的内容 —— 即使用
locale -a
列出的语言环境。 - 默认值继承自服务器的执行环境。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 使用 locale -a 列出的语言环境 |
segments;system;restart |
timezone
设置用于显示和解释时间戳的时区。
- 默认设置是使用系统环境指定的任何时区。更多信息请见 时区。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | GMT | 时区缩写 | segments;restart |
timezone_abbreviations
设置服务器接受的日期时间输入中使用的时区缩写集合。
- 支持选项是存储在
$GPHOME/share/postgresql/timezonesets/
中配置文件的名称,你也可以在此路径下创建属于自己的文件。例如:要使用包含默认时区和 WIB(Waktu Indonesia Barat)时区的文件custom
。
- 从目录
$GPHOME/share/postgresql/timezonesets/
复制文件Default
到文件custom
。 将文件Asia.txt
中的WIB
时区信息添加到custom
。 - 将文件
custom
复制到 YMatrix 数据库 Master 和 Segment 主机上的$GPHOME/share/postgresql/timezonesets/
目录。 - 将服务器配置参数
timezone_abbreviations
的值设置为custom
。 - 重新加载服务器配置文件(
mxstop -u
)。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | Default | Default / Australia / India / | master;session;reload |
共享库预载入(Shared Library Preloading)
为了载入附加的功能或者达到提高性能的目的,可用多个设置来预先载入共享库到服务器中。例如 $libdir/mylib
设置可能会导致 mylib.so
(或者某些平台上的 mylib.sl
)从安装的标准库目录被预装载。这些设置之间的区别在于生效的时间以及改变它们所需的特权。
可以用这个方法预装载 YMatrix 的过程语言库,通常是使用 $libdir/plXXX
语法,其中的 XXX
是 pgsql
、perl
、tcl
或 python
。
只有特别为与 YMatrix 一起使用设计的共享库才能以这种方式载入。每一个 YMatrix 支持的库都有一个“魔法块(magic block)”,它会被检查以保证兼容性。由于这个原因,非 YMatrix 无法以这种方式被载入。你可能可以使用操作系统的工具(如 LD_PRELOAD
)载入它。
总之,请参考特定模块的文档来用推荐的方法载入它。
jit_provider
这个变量表示将要被使用的 JIT 提供者库的名称。
- 这个参数只能在服务器启动时设置。
- 如果这个变量被设置为一个不存在的库,JIT 将不可用,但是也不会发生错误。
- 这种特性允许在主 YMatrix 包之外单独安装 JIT 支持。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | llvmjit | segments;session;restart;superuser |
local_preload_libraries
任何用户都能通过这个变量指定一个或者多个将要在连接开始时预载入的共享库。
- 它包含一个由逗号分隔的库名列表,其中每个名称都会按
LOAD
命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放在双引号内。 - 这个参数值只在连接开始时生效。后续的更改不会有任何效果。如果一个指定的库没有找到,连接尝试将会失败。
- 任何用户都能设置这个选项。正因为如此,能被这样载入的库被严格限制为出现于安装的标准库目录中
plugins
子目录下的共享库(保证只有“安全的”库被安装到这里是数据库管理员的责任)。 local_preload_libraries
中的项可以显式指定这个目录,例如$libdir/plugins/mylib
,或者只是指定库的名称 —mylib
和$libdir/plugins/mylib
的效果是相同的。- 这个特性的目的是允许非特权用户在特定的会话中载入正在调试的或者用于性能度量的库,而无需一个显式的
LOAD
命令。为了这个目的,通常通过使用客户端的PGOPTIONS
环境变量或者 ALTER ROLE SET 来设置这个参数。 - 不过,除非一个模块被特别设计成由非超级用户以这种方式使用,通常不推荐使用这个设置,而推荐关注
session_preload_libraries
。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;restart |
session_preload_libraries
只有超级用户可以通过这个变量指定一个或者多个将要在连接开始时预载入的共享库。
- 它包含一个由逗号分隔的库名列表,其中每个名称都会按
LOAD
命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放在双引号内。 - 这个参数值只在连接开始时生效。后续的更改不会有任何效果。如果一个指定的库没有找到,连接尝试将会失败。
- 这个特性的目的是允许非特权用户在特定的会话中载入正在调试的或者用于性能度量的库,而无需一个显式的
LOAD
命令。例如,通过用 ALTER ROLE SET 设置这个参数可以为一个给定用户名下的所有会话启用auto_explain
。 - 无需重启服务器就能更改这个参数(但是只有新会话启动时才会生效)。以这种方式,即便更改需要应用到所有会话,增加新模块也会变得更加容易。
- 与
shared_preload_libraries
不同,相对于在库被第一次使用时载入它,在会话开始时载入库并没有什么性能优势。不过,当使用连接池时此参数有一些优势。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;session;reload;superuser |
shared_preload_libraries
- 它包含一个由逗号分隔的库名列表,其中每个名称都会按
LOAD
命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放在双引号内。 - 这个参数只能在服务器启动时设置。如果指定的库没有找到,服务器将无法启动。
- 有些库需要执行只能在
postmaster
启动时发生的特定操作,例如分配共享内存、保留轻量级锁或者启动后台工作者。这些库必须通过这个参数在服务器启动时载入。 - 其他库也能被预载入。通过预载入一个共享库,当该库被第一次使用时就可以避免库的启动时间。不过,启动每个新服务器进程的时间可能会略有增加,即使该进程从不使用该库。因此,推荐只把这个参数用于那些要在大多数会话中使用的库上。
- 改变这个参数要求重启服务器,因此 对于短期的调试任务来说这不是好的选择,应该转用
session_preload_libraries
。 - 注意:在 Windows 主机上,在服务器启动时预载入一个库并不会减少启动每个新服务器进程所需的时间;每一个服务器进程将会重新载入预载入的库。不过,对于那些要在
postmaster
启动时执行操作的库来说,Windows 主机上的shared_preload_libraries
仍然有用。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;restart |
其他默认值选项(Other Defaults)
dynamic_library_path
如果需要打开动态装载的模块,并且在 CREATE FUNCTION
或 LOAD
命令中指定的文件名没有目录部分(即名字中不包含 “/”),那么系统将搜索这个路径以查找所需的文件。
dynamic_library_path
的值必须是一个冒号分隔(或者在 Windows 上以分号分隔)的绝对目录路径的列表。如果一个列表元素以特殊字符串开始,$libdir
会被替换为 PostgreSQL 包中已编译好的库目录。这里是 PostgreSQL 发行版提供的模块安装位置(使用pg_config --pkglibdir
来找到这个目录的名字)。
例如:dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
或者在 Windows 环境中:
dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
- 这个参数的默认值是
$libdir
。如果该值被设置为一个空字符串,则关闭自动路径搜索。 - 这个参数可以在运行时由超级用户修改,但是这样修改的设置只能保持到这个客户端连接的结尾,因此这个方法应该保留给开发目的。
- 我们建议在
postgresql.conf
配置文件中设置这个参数。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | $libdir | 由冒号分隔的绝对目录路径列表 | segments;system;restart |