本文档介绍了系统配置参数中 客户端连接默认值类别的相关参数。
注意!
为确保系统稳定与安全,请务必谨慎手动修改相关参数。
设置 bytea
类型值的输出格式。
hex
(默认)和 escape
(传统的 PostgreSQL 格式)。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | hex | hex / escape | segments;session;reload |
这个参数控制了在使用 CREATE FUNCTION
语句创建函数时是否检查函数体的语法和引用。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | master;session;reload |
控制被发送给客户端的消息级别。
log
值的级别在此参数中与在 log_min_messages
参数中是不同的。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | notice | debug5 / debug4 / debug3 / debug2 / debug1 / log / notice / warning / error 每个级别都包括其后的所有级别 级别越靠后,被发送的消息越少 |
master;session;reload |
这个变量指定当一个 CREATE
命令没有显式指定一个表空间时,创建对象(表和索引)的默认表空间。
CREATE
的权限,则设置成功,否则会自动指定当前数据库为默认表空间。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | master;session;reload |
是否令每个新事务只拥有读权限。
off
,即同时给予读、写权限。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload |
GIN 索引返回的集合尺寸的软上限。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ INT_MAX | master;session;reload |
设置 fastupdate
被启用时,可以使用的 GIN 索引的待处理列表的最大尺寸。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 4096 | 64 ~ (INT_MAX/1024) | master;session;reload |
如果数据库会话空闲的时间超过指定的时间(毫秒),则会话将释放系统资源(例如共享内存),但仍保持与数据库的连接。
0
,则代表着禁用此功能。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 18000 | 0 ~ INT_MAX | master;system;reload |
终止任何已经闲置超过这个参数所指定时间量的打开事务的会话。
0
,即禁用超时。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ INT_MAX | master;session;reload |
报告完成文本数据排序的区域设置。
默认值 | 取值范围 | 设置分类 |
---|---|---|
系统依赖 | read only |
报告确定字符分类的区域设置。
默认值 | 取值范围 | 设置分类 |
---|---|---|
系统依赖 | read only |
如果任何语句在试图获取表、索引、行或其他数据库对象上的锁时等到超过此参数指定的时间量,该语句将被中止。
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 |
这个变量控制是否以抛出一个错误来代替应用一条行安全性策略。
on
时,策略正常应用;在设置为 off
时,只要有至少一条策略被应用则查询就会失败。off
。pg_dump
默认会做这种更改。BYPASSRLS
属性的角色)没有效果。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | master;system;restart |
当一个对象(表、数据类型、函数等)被用一个无模式限定的简单名称引用时,此参数指定搜索该对象的模式顺序。
search_path
的值必需是一个逗号分隔的模式名列表。任何不是一个已有模式的名字的名称,或者是一个用户不具有 USAGE
权限的模式,将被没有提醒地直接忽略。$user
,则具有被 CURRENT_USER
返回的名字的模式将取代这个特殊名。如果有这样一个特殊名模式,那么该用户便具有该模式的 USAGE 权限(如果没有,$user
会被忽略)。pg_catalog
是否在搜索路径中被提及系统目录模式,它总是会被搜索。如果它在路径中被提及,那么它将被按照路径指定的顺序搜索。如果 pg_catalog
不在路径中,则它将在任何路径项之前被搜索。pg_temp_nnn
也总是被搜索(如果存在)。它可以在路径中通过使用别名 pg_temp
显式列出。如果在路径中没有列出,那么会首先对它进行搜索(甚至是在 pg_catalog
之前)。然而,临时模式只被用来搜索关系(表、视图、序列等)和数据类型名。它从不用于搜索函数或操作符名。search_path
中第一个合法模式中。"$user", public
。这种设置支持数据库(其中没有用户拥有私有模式,并且所有人共享使用 public
模式),每个用户的私有模式,以及前两者组合的共享使用。其它效果可以通过全局或者针对每个用户修改默认搜索路径设置获得。current_schemas
检查。它和检查 search_path
的值不太一样,因为current_schemas
显示出现在 search_path
中的项如何被解析。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | "$user", public | 以逗号分隔的模式名称列表 | master;session;reload |
为当前会话控制复制相关的触发器和规则的触发。
ENABLE TRIGGER
以及 ENABLE RULE
。origin
和 local
同样对待。第三方复制系统可能会把这两个值用于其内部目的,例如把 local
用来标出一个不应复制其更改的会话。replica
还会禁用所有的外键检查。如果使用不当,可能会让数据处于一种不一致的状态。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | origin | origin / replica / local | segments;session;reload;superuser |
中止任何使用了超过指定时间量(毫秒数)的语句。
log_min_error_statement
被设置为 error
或更低,语句如果超时也会被记录。postgresql.conf
中设置此参数,因为它会影响所有会话。0
,即禁用超时。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ INT_MAX | master;session;reload |
当 CREATE
命令未明确指定表空间时,指定要在其中创建临时对象(临时表和临时表上的索引)的表空间。
temp_tablespaces
时,避免指定不存在的表空间或用户确实具有 CREATE
权限的表空间。对于非超级用户,超级用户必须授予他们对临时表空间的 CREATE
权限。当使用先前设置的值(例如 postgresql.conf
中的值)时,不存在的表空间将被忽略,用户缺少 CREATE
的表空间也是如此特权。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 一个或多个表空间名称 | master;session;reload |
指定在之前的统计信息收集过程中,计数到的堆元组总数的一个分数,插入不超过这一数量所代表的元组不会导致 VACUUM
清理阶段的索引扫描。
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 在扫描表时决定是否用 FrozenXID 替换事务 ID 时应使用的截止年龄(在事务中)。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 50000000 | 0 ~ 100000000000 | segments;system;restart |
当表的 pg_class.relfrozenxid
域达到该设置指定的年龄时,VACUUM
会执行一次激进的扫描。
VACUUM
的不同在于它会访问每一个可能包含未冻结 XID 或者 MXID 的页面,而不只是那些可能包含死亡元组的页面。VACUUM
是有机会被执行的。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 150000000 | 0 ~ 200000000 | segments;session;reload |
指定 VACUUM
在扫描表时用来决定是否把组合事务 ID 替换为一个更新的事务 ID 或组合事务 ID 的切断年龄(以组合事务计)。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 5000000 | 0 ~ 100000000 | segments;session;reload |
如果表的 pg_class.relminmxid
域超过了这个设置指定的年龄,VACUUM
会执行一次激进的扫描。
VACUUM
的区别在于它会访问每一个可能包含未冻结 XID 或者 MXID 的页面,而不是只扫描那些可能包含死亡元组的页面。VACUUM
是有机会被执行的。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 150000000 | 0 ~ 200000000 | segments;session;reload |
设置客户端编码(字符集)。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | SQL_ASCII | 支持的字符集 | master;session;reload |
设置日期和时间值的显示格式,以及解释有歧义的日期输入值的规则。
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 |
选择文本搜索功能的那些变体使用的文本搜索配置,这些变体没有指定配置的显式参数。
pg_catalog.simple
,但是如果能够标识一个匹配区域的配置,initdb
将用对应于选中的 lc_ctype
区域的设置初始化配置文件。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | pg_catalog.english | 文本搜索配置的名称 | master;session;reload |
这个参数用于调整浮点值显示的位数,包括 float4
,float8
以及几何数据类型。
float8
值最多需要 17 位数字,float4
值最多需要 9 位数字。3
。0
或负值,则输出四舍五入为给定的十进制精度。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 1 | -15 ~ 3 | master;session;reload |
设置间隔值的显示格式。
sql_standard
将产生匹配 SQL 标准间隔文本的输出iso_8601
将生成与 ISO 8601 定义的指示符匹配时间间隔格式的输出。intervalstyle
参数也可以影响对有歧义的间隔输入的解释。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | postgres | sql_standard / postgres / iso_8601 / postgres_verbose | master;session;reload |
设置消息显示的语言。
locale -a
列出的语言环境。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 使用 locale -a 列出的语言环境 |
segments;system;restart;superuser |
设置用于格式化货币金额的区域设置,例如使用 to_char
系列函数。
locale -a
列出的语言环境。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 使用 locale -a 列出的语言环境 |
segments;system;restart |
设置用于格式化数字的语言环境,例如使用 to_char
系列函数。
locale -a
列出的语言环境。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 使用 locale -a 列出的语言环境 |
segments;system;restart |
设置用于格式化日期和时间的区域,例如使用 to_char
系列函数。
locale -a
列出的语言环境。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | 使用 locale -a 列出的语言环境 |
segments;system;restart |
设置用于显示和解释时间戳的时区。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | GMT | 时区缩写 | segments;restart |
设置服务器接受的日期时间输入中使用的时区缩写集合。
$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 |
为了载入附加的功能或者达到提高性能的目的,可用多个设置来预先载入共享库到服务器中。例如 $libdir/mylib
设置可能会导致 mylib.so
(或者某些平台上的 mylib.sl
)从安装的标准库目录被预装载。这些设置之间的区别在于生效的时间以及改变它们所需的特权。
可以用这个方法预装载 YMatrix 的过程语言库,通常是使用 $libdir/plXXX
语法,其中的 XXX
是 pgsql
、perl
、tcl
或 python
。
只有特别为与 YMatrix 一起使用设计的共享库才能以这种方式载入。每一个 YMatrix 支持的库都有一个“魔法块(magic block)”,它会被检查以保证兼容性。由于这个原因,非 YMatrix 无法以这种方式被载入。你可能可以使用操作系统的工具(如 LD_PRELOAD
)载入它。
总之,请参考特定模块的文档来用推荐的方法载入它。
这个变量表示将要被使用的 JIT 提供者库的名称。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | llvmjit | segments;session;restart;superuser |
任何用户都能通过这个变量指定一个或者多个将要在连接开始时预载入的共享库。
LOAD
命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放在双引号内。plugins
子目录下的共享库(保证只有“安全的”库被安装到这里是数据库管理员的责任)。local_preload_libraries
中的项可以显式指定这个目录,例如 $libdir/plugins/mylib
,或者只是指定库的名称 — mylib
和 $libdir/plugins/mylib
的效果是相同的。LOAD
命令。为了这个目的,通常通过使用客户端的 PGOPTIONS
环境变量或者 ALTER ROLE SET 来设置这个参数。session_preload_libraries
。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;restart |
只有超级用户可以通过这个变量指定一个或者多个将要在连接开始时预载入的共享库。
LOAD
命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放在双引号内。LOAD
命令。例如,通过用 ALTER ROLE SET 设置这个参数可以为一个给定用户名下的所有会话启用 auto_explain
。shared_preload_libraries
不同,相对于在库被第一次使用时载入它,在会话开始时载入库并没有什么性能优势。不过,当使用连接池时此参数有一些优势。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;session;reload;superuser |
LOAD
命令的方式解析。项之间的空格会被忽略,如果需要在库名中包含空格或者逗号,请把库名放在双引号内。postmaster
启动时发生的特定操作,例如分配共享内存、保留轻量级锁或者启动后台工作者。这些库必须通过这个参数在服务器启动时载入。session_preload_libraries
。postmaster
启动时执行操作的库来说,Windows 主机上的 shared_preload_libraries
仍然有用。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;restart |
如果需要打开动态装载的模块,并且在 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 |