语句行为
介绍SQL语句执行过程的相关默认参数。
search_path
参数说明:当一个被引用对象没有指定模式时,此参数设置模式搜索顺序。
参数类型:字符串
参数单位:无
取值范围:由一个或多个模式名构成的字符串,不同的模式名用逗号隔开。
- 设置为'"$user",public'时,支持共享数据库(没有用户具有私有模式和所有共享使用public),用户私有模式和这些功能的组合使用。可以通过改变默认搜索路径来获得其他效果,无论是全局化的还是私有化的。
- 设置为空字符串('')的时候,系统会自动转换成一对双引号。
- 设置的内容中包含双引号时,系统会认为是不安全字符,会将每个双引号转换成一对双引号。
默认值:'"$user",public'
$user表示与当前会话用户名同名的模式名,如果这样的模式不存在,$user将被忽略。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:
- 当前会话存放临时表的模式时,可以使用别名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中首位有效的模式名称。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
current_schema
参数说明:设置当前的模式。
参数类型:字符串
参数单位:无
取值范围:由一个或多个模式名构成的字符串,不同的模式名用逗号隔开。
默认值:'"$user",public'
$user表示与当前会话用户名同名的模式名,如果这样的模式不存在,$user将被忽略。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
default_tablespace
参数说明:当CREATE命令没有明确声明表空间时,所创建对象(表和索引等)的缺省表空间。
- 值是一个表空间的名称或者一个表示使用当前数据库缺省表空间的空字符串。若指定的是一个非默认表空间,用户必须具有它的CREATE权限,否则尝试创建会失败。
- 临时表不使用此参数,可以用temp_tablespaces代替。
- 创建数据库时不使用此参数。默认情况下,一个新的数据库从模板数据库继承表空间配置。
参数类型:字符串
参数单位:无
取值范围:已有表空间的名称或空字符串,其中空字符串表示使用默认表空间。
默认值:""
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
temp_tablespaces
参数说明:当一个CREATE命令没有明确指定一个表空间时,temp_tablespaces指定了创建临时对象(临时表和临时表的索引)所在的表空间。在这些表空间中创建临时文件用来做大型数据的排序工作。
其值是一系列表空间名的列表。如果列表中有多个表空间时,每次临时对象的创建,GaussDB会在列表中随机选择一个表空间;如果在事务中,连续创建的临时对象被放置在列表里连续的表空间中。如果选择的列表中的元素是一个空字符串,GaussDB将自动将当前的数据库设为默认的表空间。
参数类型:字符串
参数单位:无
取值范围:已有表空间的名称或空字符串。空字符串表示所有的临时对象仅在当前数据库默认的表空间中创建,请参考default_tablespace。
默认值:""
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
default_storage_nodegroup
参数说明:设置当前默认建表所在的Node Group,目前只适用普通表。
参数类型:字符串
参数单位:无
取值范围:已有Node Group的名称或“installation”。
默认值:"installation"
- 值为“installation”表示建表会默认建在安装的Node Group上。
- 值为其他字符串表示建表会默认建在设置的Node Group上。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
check_function_bodies
参数说明:设置是否在CREATE FUNCTION执行过程中进行函数体字符串的合法性验证。为了避免产生问题(比如避免从转储中恢复函数定义时向前引用的问题),偶尔会禁用验证。开启后主要验证存储过程中PL/SQL的语法问题,包括数据类型、语句和表达式等,对于其中出现的SQL则在Create阶段不做检查而采用了运行时检查的方式。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示在CREATE FUNCTION执行过程中进行函数体字符串的合法性验证。
- off:表示在CREATE FUNCTION执行过程中不进行函数体字符串的合法性验证。
默认值:on
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
default_transaction_isolation
参数说明:设置默认的事务隔离级别。
当前版本暂不支持设置默认的事务隔离级别,默认为read committed,请勿自行修改。
参数类型:枚举类型
参数单位:无
取值范围:
- read committed:表示事务读已提交。
- read uncommitted:表示事务读未提交。
- repeatable read:表示事务可重复读。
- serializable:GaussDB目前功能上不支持此隔离级别,等价于repeatable read。
默认值:read committed
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
default_transaction_read_only
参数说明:设置每个新创建事务是否是只读状态。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示只读状态。
- off:表示非只读状态。
默认值:off
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:该参数设为on后,无法执行dml和写事务。
default_transaction_deferrable
参数说明:控制每个新事务的默认延迟状态。只读事务或者那些比序列化更加低的隔离级别的事务除外。
GaussDB不支持可串行化的隔离级别,因此,该参数无实际意义。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示默认延迟。
- off:表示默认不延迟。
默认值:off
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
session_replication_role
参数说明:控制当前会话与复制相关的触发器和规则的行为。
修改该参数取值会丢弃之前任何缓存的执行计划。
参数类型:枚举类型
参数单位:无
取值范围:
- origin:表示从当前会话中复制插入、删除、更新等操作。
- replica:表示从其他地方复制插入、删除、更新等操作到当前会话。
- local:表示函数执行复制时会检测当前登录数据库的角色并采取相应的操作。
默认值:origin
设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
statement_timeout
参数说明:当语句执行时间超过该参数设置的时间(从服务器收到命令时开始计时)时,该语句将会报错并退出执行。
参数类型:整型
参数单位:ms
取值范围:0 ~ 2147483647
默认值:0,表示不开启超时报错功能。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。例如,不带单位取值2000,表示statement_timeout为2000ms;带单位取值2s,表示statement_timeout为2s。取值如果要带单位,必须为ms、s、min、h、d。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
vacuum_freeze_min_age
参数说明:VACUUM在扫描一个表时,用于判断是否用FrozenXID替换记录的xmin字段(在同一个事务中)的最小时间。
参数类型:整型
参数单位:无
取值范围:0 ~ 576460752303423487
尽管随时可以将此参数设为上述取值范围之间的任意值,但是,VACUUM将默认其有效值范围限制在autovacuum_freeze_max_age的50%以内。
默认值:2000000000
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置偏大会使得freeze时间推迟,导致回收效率降低。
vacuum_freeze_table_age
参数说明:指定VACUUM扫描全表以冻结元组的时间。如果当前事务号与表pg_class.relfrozenxid64字段的差值已经大于参数指定的时间,则VACUUM会对全表进行扫描。
参数类型:整型
参数单位:无
取值范围:0~576460752303423487
尽管随时可以将此参数设为上述取值范围之间的任意值,但是,VACUUM将默认其有效值范围限制在autovacuum_freeze_max_age的95%以内。定期手动执行VACUUM可以在对此表的反重叠自动清理启动之前运行。
默认值:4000000000
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置偏大可能导致表空间膨胀。
bytea_output
参数说明:设置bytea类型值的输出格式。
参数类型:枚举类型
参数单位:无
取值范围:
- hex:将二进制数据编码为每字节2位十六进制数字。
- escape:采用以ASCII字符序列表示二进制串的方法,同时将那些无法表示成ASCII字符的二进制串转换成特殊的转义序列。
默认值:hex
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
xmlbinary
参数说明:设置二进制值在XML中的编码格式。
此参数目前不支持XML类型数据。
参数类型:枚举类型
参数单位:无
取值范围:
- base64:使用base64编码格式。
- hex:使用hex编码格式。
默认值:base64
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
xmloption
参数说明:对XML数据进行隐式转换或序列化操作时,将其视为视为文档还是普通的字符串。
此参数目前不支持XML类型数据。
参数类型:枚举类型
参数单位:无
取值范围:
- document:表示HTML格式的文档。
- content:表示普通的字符串。
默认值:content
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
max_compile_functions
参数说明:设置节点可存储的存储过程和函数的编译结果的最大数量,包括系统自带的存储过程、以及用户自定义的存储过程和函数。编译结果超过该参数的取值后,系统会自动触发内存淘汰,删除未使用的普通存储过程和函数。
参数类型:整型
参数单位:无
取值范围:1 ~ 2147483647
默认值:1000
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值,有助于减少内存占用,提升系统性能。
设置不当的风险与影响:编译结果数量超过该参数设定的值后,若系统一直找不到适合删除的存储过程和函数,会占用大量内存,导致性能下降。