欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

19.11. 客户端连接默认值

最编程 2024-01-11 20:00:55
...
search_path (string)

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

search_path的值必需是一个逗号分隔的模式名列表。任何不是一个已有模式的名称,或者是一个用户不具有USAGE权限的模式,将被安静地忽略。

如果列表项之一是特殊名$user,则具有SESSION_USER返回的名字的模式将取代它(如果有这样一个模式并且该用户有该模式的USAGE权限;如果没有,$user会被忽略)。

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

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

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

这个参数的缺省值是"$user", public。这种设置支持一个数据库(其中没有用户拥有私有模式,并且所有人共享使用public) 、每个用户私有模式及其组合的共享使用。其它效果可以通过全局或者针对每个用户修改默认搜索路径设置获得。

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

更多关于模式处理的信息,请见第 5.8 节

row_security (boolean)

此变量控制是否提高错误以代替应用行安全策略。 当设置为on时,策略往往适用。 当设置为off时,查询失败,这将应用至少一个策略。 默认为on。 在有限的行可见性引起不正确的结果的位置更改为off。 例如,pg_dump使用缺省更改。 这个变量不影响避开每行安全策略的角色, 即超级用户和具有BYPASSRLS属性的角色。

关于行安全策略的更多信息,参阅CREATE POLICY

default_tablespace (string)

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

该值要么是一个表空间的名字,要么是一个指定使用当前数据库默认表空间的空字符串。如果该值和任何现有表空间的名字都不匹配,PostgreSQL将自动使用当前数据库的默认表空间。如果指定了一个非默认的表空间,用户必须对它有CREATE权限,否则创建企图将失败。

这个变量不被用于临时表,对临时表会使用temp_tablespaces

当创建数据库时也会使用这个变量。默认情况下,一个新数据库会从它的模板数据库继承其表空间设置。

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

temp_tablespaces (string)

这个变量指定当一个CREATE命令没有显式指定一个表空间时,创建临时对象(临时表和临时表上的索引)的默认表空间。用于排序大型数据集的临时文件也被创建在这些表空间中。

该值是一个表空间名字的列表。当列表中有多于一个名称时,每次一个临时对象被创建时PostgreSQL随机选择列表中的一个成员。例外是在一个事务中,连续创建的临时对象被放置在里表中的连续表空间中。如果列表被选中元素是一个空字符串,PostgreSQL将自动使用当前数据库的默认表空间。

temp_tablespaces被交互式地设置时,指定一个不存在的表空间是一种错误,类似于为用户指定一个不具有CREATE权限的表空间。不过,当使用一个之前设置的值时,不存在的表空间会被忽略,就像用户缺少CREATE权限的表空间一样。特殊地,使用一个在postgresql.conf中设置的值时,这条规则起效。

默认值是一个空字符串,它使得所有临时对象被创建在当前数据库的默认表空间中。

参阅default_tablespace

check_function_bodies (boolean)

这个参数通常为打开 。当设置为off时,它禁用CREATE FUNCTION期间对函数体字符串的验证。禁用验证避免了验证处理的副作用并且避免了如向前引用导致的伪肯定。在代表其他用户载入函数之前设置这个参数为offpg_dump会自动这样做。

default_transaction_isolation (enum)

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

更多信息请参阅第 13 章SET TRANSACTION

default_transaction_read_only (boolean)

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

更多信息请参考SET TRANSACTION

default_transaction_deferrable (boolean)

当运行在可序列化隔离级别时,一个可延迟只读 SQL 事务可以在它被允许继续之前延迟一段时间。但是,一旦它开始执行就不会产生任何用来保证可序列化性的负荷;因此序列化代码将没有任何理由因为并发更新而强制它中断,使得这个选项适合于长时间运行的只读事务。

这个参数控制每个新事务的默认可延迟状态。目前它对读写事务或者那些操作在低于可序列化隔离级别上的事务无效。默认值是off

详情请参阅SET TRANSACTION

session_replication_role (enum)

为当前会话控制复制相关的触发器和规则的触发。需要超级用户权限才能设置这个变量,并且会导致丢弃任何之前缓存下来的查询计划。可能的值有origin(默认)、replicalocal。详见ALTER TABLE

statement_timeout (integer)

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

我们不推荐在postgresql.conf中设置statement_timeout,因为它会影响所有会话。

lock_timeout (integer)

如果任何语句在试图获取表、索引、行或其他数据库对象上的锁时等到超过指定的毫秒数,该语句将被中止。该时间限制独立地应用于每一次锁获取尝试。该限制会应用到显式锁定请求(如LOCK TABLE或不带NOWAITSELECT FOR UPDATE)和隐式获得的锁。如果log_min_error_statement被设置为ERROR或更低,超时的语句会被记录。一个零值(默认)将关闭这个参数。

statement_timeout不同,这个超时只在等待锁时发生。注意如果statement_timeout为非零,设置lock_timeout为相同或更大的值没有意义,因为事务超时将总是第一个被触发。

我们不推荐在postgresql.conf中设置lock_timeout,因为它会影响所有会话。

idle_in_transaction_session_timeout (integer)

终止任何已经闲置超过这个参数所指定的时间(以毫秒计)的打开事务的会话。 这使得该会话所持有的任何锁被释放,并且其所持有的连接槽可以被重用, 它也允许只对这个事务可见的元组被清理。有关于此的详情请见 第 24.1 节

默认值 0 会禁用这个特性。

vacuum_freeze_table_age (integer)

当表的pg_class.relfrozenxid域达到该设置指定的年龄时,VACUUM会执行一次全表扫描。 积极的扫描不同于常规的VACUUM,因为它会访问每个可能包含未冻结XID或MXID的页面,而不仅仅是那些可能包含死元组的页面。 默认值是 1.5 亿个事务。尽管用户可以把这个值设置为从 0 到 20 亿,VACUUM会悄悄地将有效值设置为autovacuum_freeze_max_age值的95%,因此在表上启动一次反回卷自动清理之前有机会进行一次定期手动VACUUM。更多信息请见第 24.1.5 节

vacuum_freeze_min_age (integer)

指定VACUUM在扫描表时用来决定是否冻结行版本的切断年龄(以事务计)。默认值是 5 千万个事务。尽管用户可以将这个值设置为从 0 到 10 亿,VACUUM会悄悄地将有效值设置为autovacuum_freeze_max_age值的一半,这样在强制执行的自动清理之间不会有过短的时间间隔。更多信息请见第 24.1.5 节

vacuum_multixact_freeze_table_age (integer)

如果表的pg_class.relminmxid域超过了这个设置指定的年龄,VACUUM会执行一次全表扫描。 积极的扫描不同于常规的VACUUM,因为它会访问每个可能包含未冻结XID或MXID的页面,而不仅仅是那些可能包含死元组的页面。 默认值是 1.5 亿个组合事务。尽管用户可以把这个值设置为从 0 到 20 亿,VACUUM会悄悄地将有效值设置为autovacuum_multixact_freeze_max_age值的95%,因此在表上启动一次反回卷自动清理之前有机会进行一次定期手动VACUUM。更多信息请见第 24.1.5.1 节

vacuum_multixact_freeze_min_age (integer)

指定VACUUM在扫描表时用来决定是否把组合事务 ID 替换为一个更新的事务 ID 或组合事务 ID 的切断年龄(以组合事务计)。默认值是 5 千万个组合事务。尽管用户可以将这个值设置为从 0 到 10 亿,VACUUM会悄悄地将有效值设置为autovacuum_multixact_freeze_max_age值的一半,这样在强制执行的自动清理之间不会有过短的时间间隔。更多信息请见第 24.1.5.1 节

bytea_output (enum)

设置bytea类型值的输出格式。有效值是hex(默认)和 escape(传统的 PostgreSQL 格式)。详见第 8.4 节。不管这个设置的值如何,bytea类型总是接受这两种格式的输入。

xmlbinary (enum)

设置二进制值如何被编码为 XML。例如,这适用于通过xmlelement函数或xmlforest函数将bytea值转换到 XML 值。可能的值有base64hex,它们都是用 XML 模式标准定义的。默认值是base64。更多关于 XML 相关函数的信息可参阅第 9.14 节

这里的实际选择都是根据爱好做出的,只受客户端应用中可能存在的限制的约束。两种方法都支持所有可能的值,尽管十六进制编码将比 base64 编码更大。

xmloption (enum)

当在XML和字符串值之间进行转换时,无论设置DOCUMENT或 CONTENT都是隐式的。可参阅Section 8.13。 有效值是DOCUMENT和CONTENT。 缺省值是CONTENT。 当在 XML 和字符串值之间进行转换时,设置DOCUMENTCONTENT都是隐式的。详见第 8.13 节。有效值是DOCUMENTCONTENT。默认值是CONTENT

根据 SQL 标准,设置这个选项的命令是:

SET XML OPTION { DOCUMENT | CONTENT };

这种语法在 PostgreSQL 也可用。

gin_pending_list_limit (integer)

当启用fastupdate时,设置正在使用的GIN挂起列表的最大尺寸。 如果列表增长大于这个最大尺寸, 通过移动块存储的主要的GIN数据结构项进行清理。 默认值为四字节(4MB)。 为单个GIN索引改变索引存储参数来重写此设置。 参阅第 64.4.1 节第 64.5 节 获取更多信息。