语句行为

介绍SQL语句执行过程的相关默认参数。

search_path

**参数说明:**当一个被引用对象没有指定模式时,此参数设置模式搜索顺序。它的值由一个或多个模式名构成,不同的模式名用逗号隔开。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

  • 当前会话如果存放临时表的模式时,可以使用别名pg_temp将它列在搜索路径中,如’pg_temp,public’。存放临时表的模式始终会作为第一个被搜索的对象,排在pg_catalog和search_path中所有模式的前面,即具有第一搜索优先级。建议用户不要在search_path中显示设置pg_temp。如果在search_path中指定了pg_temp,但不是在最前面,系统会提示设置无效,pg_temp仍被优先搜索。通过使用别名pg_temp,系统只会在存放临时表的模式中搜索表、视图和数据类型这样的数据库对象,不会在里面搜索函数或运算符这样的数据库对象。
  • 系统表所在的模式pg_catalog,总是排在search_path中指定的所有模式前面被搜索,即具有第二搜索优先级(pg_temp具有第一搜索优先级)。建议用户不要在search_path中显式设置pg_catalog。如果在search_path中指定了pg_catalog,但不是在最前面,系统会提示设置无效,pg_catalog仍被第二优先搜索。
  • 当没有指定一个特定模式而创建一个对象时,它们被放置到以search_path为命名的第一个有效模式中。当搜索路径为空时,会报错误。
  • 通过SQL函数current_schema可以检测当前搜索路径的有效值。这和检测search_path的值不尽相同,因为current_schema显示search_path中首位有效的模式名称。

**取值范围:**字符串

语句行为 - 图1 说明:

  • 设置为”$user”,public时,支持共享数据库(没有用户具有私有模式和所有共享使用public),用户私有模式和这些功能的组合使用。可以通过改变默认搜索路径来获得其他效果,无论是全局化的还是私有化的。
  • 设置为空串(’’)的时候,系统会自动转换成一对双引号。
  • 设置的内容中包含双引号,系统会认为是不安全字符,会将每个双引号转换成一对双引号。

默认值:“$user”,public

语句行为 - 图2 说明:

$user表示与当前会话用户名同名的模式名,如果这样的模式不存在,$user将被忽略。

current_schema

**参数说明:**此参数设置当前的模式。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**字符串

默认值:“$user”,public

语句行为 - 图3 说明:

$user表示与当前会话用户名同名的模式名,如果这样的模式不存在,$user将被忽略。

default_tablespace

**参数说明:**当CREATE命令没有明确声明表空间时,所创建对象(表和索引等)的缺省表空间。

  • 值是一个表空间的名称或者一个表示使用当前数据库缺省表空间的空字符串。若指定的是一个非默认表空间,用户必须具有它的CREATE权限,否则尝试创建会失败。

  • 临时表不使用此参数,可以用temp_tablespaces代替。

  • 创建数据库时不使用此参数。默认情况下,一个新的数据库从模板数据库继承表空间配置。

    该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**字符串,其中空表示使用默认表空间。

**默认值:**空

temp_tablespaces

**参数说明:**当一个CREATE命令没有明确指定一个表空间时,temp_tablespaces指定了创建临时对象(临时表和临时表的索引)所在的表空间。在这些表空间中创建临时文件用来做大型数据的排序工作。

其值是一系列表空间名的列表。如果列表中有多个表空间时,每次临时对象的创建,openGauss会在列表中随机选择一个表空间;如果在事务中,连续创建的临时对象被放置在列表里连续的表空间中。如果选择的列表中的元素是一个空串,openGauss将自动将当前的数据库设为默认的表空间。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**字符串。空字符串表示所有的临时对象仅在当前数据库默认的表空间中创建,请参见default_tablespace

**默认值:**空

check_function_bodies

**参数说明:**设置是否在CREATE FUNCTION执行过程中进行函数体字符串的合法性验证。为了避免产生问题(比如避免从转储中恢复函数定义时向前引用的问题),偶尔会禁用验证。开启后主要验证存储过程中PLSQL的词语法问题,包括数据类型、语句和表达式等,对于其中出现的SQL则在Create阶段不做检查而采用了运行时检查的方式。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**布尔型

  • on表示在CREATE FUNCTION执行过程中进行函数体字符串的合法性验证。
  • off表示在CREATE FUNCTION执行过程中不进行函数体字符串的合法性验证。

**默认值:**on

default_transaction_isolation

**参数说明:**设置默认的事务隔离级别。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

语句行为 - 图4 说明:

当前版本暂不支持设置默认的事务隔离级别,默认为read committed,请勿自行修改。

**取值范围:**枚举类型

  • read committed表示事务读已提交。
  • repeatable read表示事务可重复读。
  • serializable,openGauss目前功能上不支持此隔离级别,等价于repeatable read。

**默认值:**read committed

default_transaction_read_only

**参数说明:**设置每个新创建事务是否是只读状态。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

语句行为 - 图5 注意:

该参数设为on后只读,无法执行dml和写事务。

**取值范围:**布尔型

  • on表示只读状态。
  • off表示非只读状态。

**默认值:**off

default_transaction_deferrable

**参数说明:**控制每个新事务的默认延迟状态。只读事务或者那些比序列化更加低的隔离级别的事务除外。

openGauss不支持可串行化的隔离级别,因此,该参数无实际意义。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**布尔型

  • on表示默认延迟。
  • off表示默认不延迟。

**默认值:**off

session_replication_role

**参数说明:**控制当前会话与复制相关的触发器和规则的行为。

该参数属于SUSET类型参数,请参考表2中对应设置方法进行设置。

语句行为 - 图6 须知:

设置此参数会丢弃之前任何缓存的执行计划。

**取值范围:**枚举类型

  • origin表示从当前会话中复制插入、删除、更新等操作。
  • replica表示从其他地方复制插入、删除、更新等操作到当前会话。
  • local表示函数执行复制时会检测当前登录数据库的角色并采取相应的操作。

**默认值:**origin

statement_timeout

**参数说明:**当语句执行时间超过该参数设置的时间(从服务器收到命令时开始计时)时,该语句将会报错并退出执行。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**整型,0 ~ 2147483647,单位为毫秒。

**默认值:**0

vacuum_freeze_min_age

**参数说明:**指定VACUUM在扫描一个表时用于判断是否用FrozenXID替换记录的xmin字段(在同一个事务中)。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**整型,0 ~ 576 460 752 303 423 487

语句行为 - 图7 说明:

尽管随时可以将此参数设为上述取值范围之间的任意值,但是,VACUUM将默认其有效值范围限制在autovacuum_freeze_max_age的50%以内。

**默认值:**2000000000

vacuum_freeze_table_age

**参数说明:**指定VACUUM对全表的扫描冻结元组的时间。如果当前事务号与表pg_class.relfrozenxid64字段的差值已经大于参数指定的时间时,VACUUM对全表进行扫描。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**整型,0~576 460 752 303 423 487

语句行为 - 图8 说明:

尽管随时可以将此参数设为上述取值范围之间的值,但是,VACUUM将默认其有效值范围限制在autovacuum_freeze_max_age的95%以内。定期的手动VACUUM可以在对此表的反重叠自动清理启动之前运行。

**默认值:**4000000000

bytea_output

**参数说明:**设置bytea类型值的输出格式。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**枚举类型

  • hex:将二进制数据编码为每字节2位十六进制数字。
  • escape:传统化的PostgreSQL格式。采用以ASCII字符序列表示二进制串的方法,同时将那些无法表示成ASCII字符的二进制串转换成特殊的转义序列。

**默认值:**hex

xmlbinary

**参数说明:**设置二进制值是如何在XML中进行编码的。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**枚举类型

  • base64
  • hex

**默认值:**base64

xmloption

**参数说明:**当XML和字符串值之间进行转换时,设置document或content是否是隐含的。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**枚举类型

  • document:表示HTML格式的文档。
  • content:普通的字符串。

**默认值:**content

max_compile_functions

**参数说明:**设置服务器存储的函数编译结果的最大数量。存储过多的函数和存储过程的编译结果可能占用很大内存。将此参数设置为一个合理的值,有助于减少内存占用,提升系统性能。

该参数属于POSTMASTER类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**整型,1 ~ 2147483647。

**默认值:**1000

gin_pending_list_limit

**参数说明:**设置当GIN索引启用fastupdate时,pending list容量的最大值。当pending list的容量大于设置值时,会把pending list中数据批量移动到GIN索引数据结构中以进行清理。单个GIN索引可通过更改索引存储参数覆盖此设置值。

该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。

**取值范围:**整型,最小值为64,最大值为INT_MAX,单位为KB。

**默认值:**4MB