↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1
历史版本PostgreSQL 8.2 已于 2011 年 12 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

17.10. 客户端连接默认值 #

17.10.1. 语句行为 #

search_path (string) #

这个变量指定当一个对象(表、数据类型、函数等)被用一个无模式限定的简单名称引用时,搜索该对象时的模式顺序。当在不同模式中有同名对象时,将使用第一个在搜索路径中被找到的对象。一个不属于搜索路径中任何一个模式的对象只能通过用限定名(带点号)指定包含它的模式来引用。

search_path的值必须是一个逗号分隔的模式名列表。如果列表项之一是特殊值$user,则具有SESSION_USER返回的名字的模式将取代它(如果有这样一个模式。如果没有,$user会被忽略)。

系统目录模式pg_catalog总是被搜索,不管它是否在搜索路径中被提及。如果它在路径中被提及,那么它将被按照路径指定的顺序搜索。如果pg_catalog不在路径中,则它将在任何路径项之前被搜索。

同样,当前会话的临时表模式 pg_temp_nnn总是被搜索(如果它存在)。可以通过使用别名pg_temp在路径中显式列出它。如果它没有列在路径中,则首先搜索它(甚至在pg_catalog之前)。然而,临时模式仅用于搜索关系(表、视图、序列等)和数据类型名称。它永远不会用于搜索函数或操作符名称。

当对象创建时没有指定一个特定目标模式,它们将被放置在搜索路径中列出的第一个模式中。如果搜索路径为空将报告一个错误。

这个参数的默认值是'"$user", public'(其中第二部分在没有名为public的模式时会被忽略)。这支持共享使用一个数据库(其中没有用户拥有私有模式,所有人都共享使用public)、每用户私有模式以及两者的组合。通过全局或者按用户修改默认搜索路径设置,可以得到其他效果。

搜索路径的当前有效值可以通过SQL函数current_schemas()检查。它和检查search_path的值不太一样,因为current_schemas显示出现在search_path中的项如何被解析。

有关模式处理的更多信息,见第 5.7 节。

default_tablespace (string) #

这个变量指定当一个CREATE命令没有显式指定一个表空间时,创建对象(表和索引)的默认表空间。

该值要么是一个表空间的名字,要么是一个指定使用当前数据库默认表空间的空字符串。如果该值和任何现有表空间的名字都不匹配,PostgreSQL将自动使用当前数据库的默认表空间。

有关表空间的更多的信息,请见第 19.6 节。

check_function_bodies (boolean) #

这个参数通常为打开。 当设置为off时,它禁用CREATE FUNCTION期间对函数体字符串的验证。在从转储恢复函数定义时,偶尔禁用验证有助于避免前向引用之类的问题。

default_transaction_isolation (string) #

每个 SQL 事务都有一个隔离级别,可以是“读未提交”、“读已提交”、“可重复读”或者“可串行化”。这个参数控制每个新事务的默认隔离级别。默认是“读已提交”。

更多信息请参阅第 12 章和SET TRANSACTION。

default_transaction_read_only (boolean) #

一个只读的 SQL 事务不能修改非临时表。这个参数控制每个新事务的默认只读状态。默认是off(读/写)。

更多信息请参考SET TRANSACTION。

statement_timeout (integer) #

中止任何使用了超过指定毫秒数的语句,从客户端命令到达服务器时开始计时。 如果log_min_error_statement被设置为ERROR或更低,语句如果超时也会被记录。 一个零值(默认)将禁用超时。

vacuum_freeze_min_age (integer) #

指定VACUUM在扫描表时用来决定是否用FrozenXID替换事务 ID 的截止年龄(以事务计)。默认值是 1 亿个事务。尽管用户可以将该值设置为 0 到 10 亿之间的任意值,VACUUM会悄悄将有效值限制为不超过autovacuum_freeze_max_age的一半,这样强制 autovacuum 之间就不会间隔过短。更多信息请参见第 22.1.3 节。

17.10.2. 区域设置和格式化 #

DateStyle (string) #

设置日期和时间值的显示格式,以及解释有歧义的日期输入值的规则。由于历史原因,这个变量包含两个独立的部分:输出格式声明(ISO、Postgres、SQL或German)、输入/输出的年/月/日顺序(DMY、MDY或YMD)。这些可以被独立设置或者一起设置。关键字Euro和European是DMY的同义词;关键字US、NonEuro和NonEuropean是MDY的同义词。详见第 8.5 节。内置默认值是ISO, MDY,但是initdb将用对应于选中的lc_time区域设置行为的设置初始化配置文件。

timezone (string) #

设置用于显示和解释时间戳的时区。默认值是unknown,表示使用系统环境指定的时区。更多信息见第 8.5 节。

timezone_abbreviations (string) #

设置服务器接受的日期时间输入中使用的时区缩写集合。默认值为'Default',这个集合在全世界大多数地方都能工作。也还有 'Australia' 和 'India',以及可能为一种特定安装定义的其他集合。详见附录 B。

extra_float_digits (integer) #

此参数调整浮点值显示的位数,包括float4、float8和几何数据类型。 参数值会加到标准位数(按情况使用FLT_DIG或DBL_DIG)上。 此值最高可以设置为 3,以包含部分有效的数位;这对于转储需要精确还原的浮点数据特别有用。 也可以设置为负数,以抑制不需要的数位。

client_encoding (string) #

设置客户端编码(字符集)。默认使用数据库编码。

lc_messages (string) #

设置消息显示的语言。可接受的值是系统相关的;详见第 21.1 节。如果这个变量被设置为空字符串(默认),那么该值将以一种系统相关的方式从服务器的执行环境中继承。

在一些系统上,这个区域设置类别并不存在。仍然可以设置这个变量,只是不会有任何效果。同样,所期望语言的翻译消息也可能不存在。在这种情况下,你将仍然继续看到英文消息。

只有超级用户能更改这个设置,因为它会同时影响发送到服务器日志和客户端的消息,设置不当可能降低服务器日志的可读性。

lc_monetary (string) #

设置用于格式化货币量的区域设置,例如用to_char函数族。可接受的值是系统相关的;详见第 21.1 节。如果这个变量被设置为空字符串(默认),那么该值将以一种系统相关的方式从服务器的执行环境中继承。

lc_numeric (string) #

设置用于格式化数字的区域设置,例如用to_char函数族。可接受的值是系统相关的;详见第 21.1 节。如果这个变量被设置为空字符串(默认),那么该值将以一种系统相关的方式从服务器的执行环境中继承。

lc_time (string) #

设置用于格式化日期和时间值的区域设置。(目前,这个设置不做任何事情,但将来可能会。)可接受的值是系统相关的;详见第 21.1 节。如果这个变量被设置为空字符串(默认),那么该值将以一种系统相关的方式从服务器的执行环境中继承。

17.10.3. 其他默认值 #

explain_pretty_print (boolean) #

决定EXPLAIN VERBOSE显示详细查询树转储时使用缩进格式还是非缩进格式。默认值是on。

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 环境中:

dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'

这个参数的默认值是'$libdir'。如果该值被设置为一个空字符串,则关闭自动路径搜索。

这个参数可以由超级用户在运行时更改, 但以这种方式进行的设置只会持续到客户端连接结束,因此这种方法应该保留用于开发目的。 推荐设置此参数的方法是在postgresql.conf配置文件中。

gin_fuzzy_search_limit (integer) #

GIN 索引扫描返回的集合尺寸的软上限。详见第 51.4 节。

local_preload_libraries (string) #

这个变量指定在连接开始时预装载的一个或多个共享库。如果要装载多个库,它们的名称之间用逗号分隔。除非用双引号括起,所有库名都会被转换为小写。这个参数在一个特定会话开始之后不能被更改。

任何用户都能设置这个选项。正因为如此,能被这样载入的库被严格限制为出现于安装的标准库 目录中plugins子目录下的共享库(保证只有“安全的”库被安装到 这里是数据库管理员的责任)。local_preload_libraries中的项可以显式 指定这个目录,例如$libdir/plugins/mylib,或者只是指定库的 名称 — mylib 和 $libdir/plugins/mylib的效果是相同的。

在会话开始时载入库而不是在第一次使用时载入并没有性能上的优势。 相反,此特性的意图是允许把调试或性能测量库载入特定会话,而无需 给出显式的LOAD命令。例如,可以通过 ALTER USER SET 为某个给定用户名下的所有会话 设置此参数来启用调试。

如果找不到指定的库,连接尝试将会失败。

每一个 PostgreSQL 支持的库都有一个“魔法块”,它会被检查以保证兼容性。 由于这个原因,非 PostgreSQL 的库不能以这种方式载入。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。