更新时间:2024-09-02 GMT+08:00

语句行为

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

search_path

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

参数类型:USERSET

  • 当前会话存放临时表的模式时,可以使用别名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中首位有效的模式名称。

取值范围:字符串

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

默认值:"$user",public

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

current_schema

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

参数类型:USERSET

取值范围:字符串

默认值:"$user",public

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

default_tablespace

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

  • 值是一个表空间的名字或者一个表示使用当前数据库缺省表空间的空字符串。若指定的是一个非默认表空间,用户必须具有它的CREATE权限,否则尝试创建会失败。
  • 临时表不使用此参数,可以用temp_tablespaces代替。
  • 创建数据库时不使用此参数。默认情况下,一个新的数据库从模板数据库继承表空间配置。

参数类型:USERSET

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

默认值:

default_storage_nodegroup

参数说明:设置当前的默认建表所在的Node Group,目前只适用普通表。

参数类型:USERSET

取值范围:字符串

  • installation,表示默认建表在安装的Node Group上。
  • random_node_group,表示默认建表在随机选择的NodeGroup上,该配置8.1.2及以上版本支持,仅用于测试环境。
  • roach_group,表示默认建表在所有节点上,该值为roach工具预留,不能用于其他场景。
  • 取值为其他字符串,表示默认建表在设置的Node Group上。

默认值:installation

default_colversion

参数说明:设置当前默认创建列存表的存储格式版本。

参数类型:SIGHUP

取值范围:枚举类型

  • 1.0表示列存表的每列以一个单独的文件进行存储,文件名以relfilenode.C1.0、relfilenode.C2.0、relfilenode.C3.0等命名。
  • 2.0表示列存表的每列合并存储在一个文件中,文件名以relfilenode.C1.0命名。

默认值:2.0

temp_tablespaces

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

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

参数类型:USERSET

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

默认值:

check_function_bodies

参数说明:设置是否在CREATE FUNCTION执行过程中进行函数体字符串的合法性验证。为了避免产生问题(比如避免从转储中恢复函数定义时向前引用的问题),偶尔会禁用验证。

参数类型:USERSET

取值范围:布尔型

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

默认值:on

default_transaction_isolation

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

参数类型:USERSET

取值范围:枚举型

  • read committed:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。
  • read uncommitted:读未提交隔离级别,GaussDB(DWS)不支持read uncommitted,如果设置了read uncommitted,实际上使用的是read committed。
  • repeatable read:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。
  • serializable:事务可序列化,GaussDB(DWS)不支持SERIALIZABLE,如果设置了serializable,实际上使用的是repeatable read。

默认值:read committed

default_transaction_read_only

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

参数类型:SIGHUP

取值范围:布尔型

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

默认值:off

default_transaction_deferrable

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

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

参数类型:USERSET

取值范围:布尔型

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

默认值:off

session_replication_role

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

参数类型:USERSET

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

取值范围:枚举型

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

默认值:origin

statement_timeout

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

参数类型:USERSET

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

默认值:

  • 若当前集群为低版本升级到8.2.0版本,继承升级前参数,默认值为0。
  • 若当前集群为新装的8.2.0版本,默认值为24h。

vacuum_freeze_min_age

参数说明:指定VACUUM在扫描一个表时用于判断是否用FrozenXID替换事务ID的中断寿命(在同一个事务中)。

参数类型:USERSET

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

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

默认值:5000000000

vacuum_freeze_table_age

参数说明:指定VACUUM对全表的扫描冻结元组的时间。如果表的pg_class.relfrozenxid字段的值已经达到了参数指定的时间,VACUUM对全表进行扫描。

参数类型:USERSET

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

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

默认值:15000000000

bytea_output

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

参数类型:USERSET

取值范围:枚举型

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

默认值:hex

xmlbinary

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

参数类型:USERSET

取值范围:枚举型

  • base64
  • hex

默认值:base64

xmloption

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

参数类型:USERSET

取值范围:枚举型

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

默认值:content

gin_pending_list_limit

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

参数类型:USERSET

取值范围:整型,64~INT_MAX,单位为KB。

默认值:4MB