更新时间:2022-06-13 GMT+08:00

其它选项

enable_cluster_resize

参数说明:对于sql语句中涉及多个表,并且属于不同group,打开此开关可以支持此语句执行计划下推来提高性能。

参数类型:SUSET

取值范围:布尔型

  • on表示支持此语句执行计划下推来提高性能。
  • off表示不支持此语句执行计划下推来提高性能。

默认值:off

此参数用于内部运维场景,请勿随意开启。

cstore_insert_mode

参数说明:向HDFS表导入数据时,控制数据的存储位置,涉及导入数据功能的操作都受此参数控制,比如INSERT,UPDATE,COPY,VACUUM FULL等。

参数类型:USERSET

取值范围枚举型

  • AUTO:数据导入的主体部分保存在HDFS存储上,少量数据保存在delta table中。
  • DELTA:所有导入的数据都保存在delta table中。
  • MAIN:所有导入的数据都保存在HDFS存储上。

默认值:auto

该参数也可以在配置文件中指定默认值。

remote_read_mode

参数说明:设置当开启enable_crc_check为on,主DN读取的数据校验失败后是否进行远程读的开关,以及是否采用安全认证方式连接。设置后需要重启集群才能生效。

参数类型:POSTMASTER

取值范围:off,non_authentication,authentication

  • off,表示关闭远程读功能。
  • non_authentication,表示采用非认证的方式连接备DN并获取数据。
  • authentication,表示采用认证方式连接备DN并获取数据,重启集群前在$GAUSSHOME/share/sslcert/grpc/目录下必须存在证书,否则无法启动集群。

默认值:non_authentication

enable_upgrade_merge_lock_mode

参数说明:当该参数设置为on时,通过提升deltamerge内部实现的锁级别,避免和update/delete并发操作时的报错。

参数类型:USERSET

取值范围: 布尔型

  • on,提升deltamerge内部实现的锁级别,并发执行deltamerge和update/delete操作时,一个操作先执行,另一个操作被阻塞,在前一个操作完成后,后一个操作再执行。
  • off,在对HDFS表的delta table的同一行并发执行deltamerge和update/delete操作时,后一个对同一行数据更新的操作会报错退出。

默认值:off

job_queue_processes

参数说明:表示系统可以并发执行的job数目。该参数为postmaster级别,通过gs_guc设置,需要重启gaussdb才能生效。

参数类型:POSTMASTER

取值范围:0~1000

功能:

  • 当job_queue_processes设置为0值,表示不启用定时任务功能,任何job都不会被执行(因为开启定时任务的功能会对系统的性能有影响,有些局点可能不需要定时任务的功能,可以通过设置为0不启用定时任务功能)。
  • 当job_queue_processes为大于0时,表示启用定时任务功能且系统能够并发处理的最大任务数。

启用定时任务功能后,job_scheduler线程会在定时时间间隔轮询pg_jobs系统表,系统设置定时任务检查周期默认为1s。

由于并行运行的任务数太多会消耗更多的系统资源,因此需要设置系统并发处理的任务数,当前并发的任务数达到job_queue_processes时,且此时又有任务到期,那么这些任务本次得不到执行而延期到下一轮询周期。因此,建议用户需要根据每个任务的执行时长合理的设置任务的时间间隔(即submit接口中的interval参数),来避免由于任务执行时间太长而导致下个轮询周期无法正常执行。

注:如果同一时间内并行的job数很多,过小的参数值会导致job等待。而过大的参数值则消耗更多的系统资源,建议设置此参数为100,用户可以根据系统资源情况合理调整。

默认值:10

ngram_gram_size

参数说明:ngram解析器分词的长度。

参数类型:USERSET

取值范围:整型 ,1~4

默认值:2

ngram_grapsymbol_ignore

参数说明:ngram解析器是否忽略图形化字符。

参数类型:USERSET

取值范围:布尔型

  • on表示忽略图形化字符。
  • off表示不忽略图形化字符。

默认值:off

ngram_punctuation_ignore

参数说明:ngram解析器是否忽略标点符号。

参数类型:USERSET

取值范围:布尔型

  • on表示忽略标点符号。
  • off表示不忽略标点符号。

默认值:on

zhparser_dict_in_memory

参数说明:Zhparser解析器是否将字典加载到内存中。

参数类型:POSTMASTER

取值范围:布尔型

  • on表示将字典加载到内存中
  • off表示不将字典加载到内存中

默认值:on

zhparser_multi_duality

参数说明:Zhparser解析器设定是否将长词内的文字自动以二字分词法聚合。

参数类型:USERSET

取值范围:布尔型

  • on表示将长词内的文字自动以二字分词法聚合。
  • off表示不将长词内的文字自动以二字分词法聚合。

默认值:off

zhparser_multi_short

参数说明:Zhparser解析器分词执行时是否执行针对长词复合切分。

参数类型:USERSET

取值范围:布尔型

  • on表示执行针对长词复合切分。
  • off表示不执行针对长词复合切分。

默认值:on

zhparser_multi_zall

参数说明:Zhparser解析器是否将全部单字单独显示。

参数类型:USERSET

取值范围:布尔型

  • on表示将全部单字单独显示。
  • off表示不将全部单字单独显示。

默认值:off

zhparser_multi_zmain

参数说明:Zhparser解析器是否将重要单字单独显示。

参数类型:USERSET

取值范围:布尔型

  • on表示将重要单字单独显示。
  • off表示不将重要单字单独显示。

默认值:off

zhparser_punctuation_ignore

参数说明:Zhparser解析器分词结果是否忽略所有的标点等特殊符号(不会忽略\r和\n)。

参数类型:USERSET

取值范围:布尔型

  • on:忽略所有的标点等特殊符号。
  • off:不忽略所有的标点等特殊符号。

默认值:on

zhparser_seg_with_duality

参数说明:Zhparser解析器是否将闲散文字自动以二字分词法聚合。

参数类型:USERSET

取值范围:布尔型

  • on表示将闲散文字自动以二字分词法聚合。
  • off表示不将闲散文字自动以二字分词法聚合。

默认值:off

acceleration_with_compute_pool

参数说明:在查询包含OBS时,通过该参数决定查询是否通过计算资源池进行加速。

参数类型:USERSET

取值范围:布尔型

  • on表示包含有OBS的查询在计算资源池可用时,会根据代价评估决定是否通过计算资源池对查询加速。
  • off表示任何查询都不会通过计算资源池进行加速。

默认值:off

behavior_compat_options

参数说明:数据库兼容性行为配置项,该参数的值由若干个配置项用逗号隔开构成。

参数类型:USERSET

取值范围:字符串

默认值:升级场景下保持前向兼容,即与升级前的集群中该参数的默认值保持一致。新安装集群场景下,该参数默认值为check_function_conflicts,以防止用户定义错误的函数属性导致严重的问题。

  • 当前只支持表1
  • 配置多个兼容性配置项时,相邻配置项用逗号隔开,例如:set behavior_compat_options='end_month_calculate,display_leading_zero';
  • 此参数选项中strict_concat_functions和strict_text_concat_td不能同时设置。
表1 兼容性配置项

兼容性配置项

兼容性行为控制

适用兼容模式

display_leading_zero

浮点数显示配置项。

  • 不设置此配置项时,对于-1~0和0~1之间的小数,不显示小数点前的0。比如,0.25显示为.25。
  • 设置此配置项时,对于-1~0和0~1之间的小数,显示小数点前的0。比如,0.25显示为0.25。

ORA

TD

end_month_calculate

add_months函数计算逻辑配置项。

假定函数add_months的两个参数分别为param1和param2,param1的月份和param2的月份和为result。

  • 不设置此配置项时,如果param1的日期(Day字段)为月末,并且param1的日期(Day字段)比result月份的月末日期小,计算结果中的日期字段(Day字段)和param1的日期字段保持一致。比如,
1
2
3
4
5
select add_months('2018-02-28',3) from dual;
add_months
---------------------
2018-05-28 00:00:00
(1 row)
  • 设置此配置项时,如果param1的日期(Day字段)为月末,并且param1的日期(Day字段)比result月份的月末日期比小,计算结果中的日期字段(Day字段)和result的月末日期保持一致。比如,
1
2
3
4
5
select add_months('2018-02-28',3) from dual;
add_months
---------------------
2018-05-31 00:00:00
(1 row)

ORA

TD

compat_analyze_sample

analyze采样行为配置项。

设置此配置项时,会优化analyze的采样行为,主要体现在analyze时全局采样会更精确的控制在3万条左右,更好的控制analyze时Coordinator端的内存消耗,保证analyze性能的稳定性。

ORA

TD

MySQL

bind_schema_tablespace

绑定模式与同名表空间配置项。

如果存在与模式名sche_name相同的表空间名,那么如果设置search_path为sche_name, default_tablespace也会同步切换到sche_name。

ORA

TD

MySQL

bind_procedure_searchpath

未指定模式名的数据库对象的搜索路径配置项。

在存储过程中如果不显示指定模式名,会优先在存储过程所属的模式下搜索。

如果找不到,则有两种情况:

  • 若不设置此参数,报错退出。
  • 若设置此参数,按照search_path中指定的顺序继续搜索。如果还是找不到,报错退出。

ORA

TD

MySQL

correct_to_number

控制to_number()结果兼容性的配置项。

若设置此配置项,则to_number()函数结果与PG11保持一致,否则默认与Oracle保持一致。

ORA

unbind_divide_bound

控制对整数除法的结果进行范围校验。

  • 不设置此配置项时,将对除法结果进行校验,超出范围则报错。例如,示例中INT_MIN/(-1)会因为超过结果大于INT_MAX而报越界错误:
SELECT (-2147483648)::int / (-1)::int;
ERROR:  integer out of range
  • 若设置此配置项,则不需要对除法结果进行范围校验。例如,示例中INT_MIN/(-1)可以得到输出结果INT_MAX+1:
SELECT (-2147483648)::int / (-1)::int;
  ?column?
------------
 2147483648
(1 row)

ORA

TD

merge_update_multi

控制merge into匹配多行时是否进行update操作。

若设置此配置项,匹配多行时update不报错,否则默认与Oracle保持一致,报错。

ORA

TD

return_null_string

控制函数lpad()、rpad()、repeat()、regexp_split_to_table()和split_part()的结果为空字符串''的显示配置项。

  • 不设置此配置项时,空字符串显示为NULL。
1
2
3
4
5
select length(lpad('123',0,'*')) from dual;
length
--------

(1 row)
  • 设置此配置项时,空字符串显示为''。
1
2
3
4
5
select length(lpad('123',0,'*')) from dual;
length
--------
0
(1 row)

ORA

compat_concat_variadic

控制函数concat()和concat_ws()对variadic类型结果兼容性的配置项。

若设置此配置项,当concat函数参数为variadic类型时,保留Oracle和Teradata兼容模式下不同的结果形式;否则默认Oracle和Teradata兼容模式下结果相同,且与Oracle保持一致。

ORA

TD

convert_string_digit_to_numeric

控制CHAR类型和INT类型进行二元BOOL运算时类型转换优先级的配置项。

  • 不设置此配置项时,类型转换优先级与PG9.6一致。
  • 设置此配置项时,所有CHAR类型和INT类型的二元BOOL运算均强制转换为NUMERIC类型进行计算。

    设置此配置项后会被影响的CHAR类型包括BPCHAR、VARCHAR、NVARCHAR2、TEXT四种类型,会被影响的INT类型包括INT1、INT2、INT4、INT8四种类型。

注意:

此配置项只对二元BOOL运算生效,例如,INT2>TEXT、INT4=BPCHAR,非BOOL运算不会受到影响,该配置项暂不支持INT>'1.1'这类UNKNOWN类型运算的转换。由于该配置项开启后,CHAR类型与INT类型的BOOL运算会优先转换为NUMERIC类型进行计算,因此会影响数据库计算性能,当JOIN列为受影响的类型组合时,还会影响执行计划。

ORA

TD

MySQL

check_function_conflicts

控制是否检查自定义plpgsql/SQL函数的属性。

  • 不设置此配置项时,不检查自定义函数的IMMUTABLE/STABLE/VOLATILE属性。
  • 设置此配置项时,会检查自定义函数的IMMUTABLE属性,如果函数中含有表,或者是有STABLE/VOLATILE函数时,在执行时会报错。因为函数中如果有表或者STABLE/VOLATILE函数时,与函数定义中的IMMUTABLE属性冲突,即这种场景下,函数的行为非IMMUTABLE。

例如:设置此参数时,以下场景下会执行报错:

CREATE OR replace FUNCTION sql_immutable (INTEGER)
RETURNS INTEGER AS 'SELECT a+$1 from shipping_schema.t4 where a=1;'
LANGUAGE SQL IMMUTABLE
RETURNS NULL
ON NULL INPUT;
select sql_immutable(1);
ERROR:  IMMUTABLE function cannot contain SQL statements with relation or Non-IMMUTABLE function.
CONTEXT:  SQL function "sql_immutable" during startup
referenced column: sql_immutable

ORA

TD

MySQL

varray_verification

控制是否校验数组长度以及数组类型长度。用于兼容GaussDB(DWS) 8.1.0之前的版本。

若设置此配置项,不会校验数组长度以及数组类型长度。

-- 场景1
CREATE OR REPLACE PROCEDURE varray_verification 
AS 
    TYPE org_varray_type IS varray(5) OF VARCHAR2(2); 
    v_org_varray org_varray_type; 
BEGIN 
    v_org_varray(1) := '111'; --例如赋值已经超过了VARCHAR2(2)的限制,配置该选项后将和历史版本保持一致不进行校验
END; 
/ 
--场景2
 CREATE OR REPLACE PROCEDURE varray_verification_i3_1 
AS 
    TYPE org_varray_type IS varray(2) OF NUMBER(2); 
    v_org_varray org_varray_type; 
BEGIN 
    v_org_varray(3) := 1; --例如赋值已经超过了varray(2)的数组长度限制,配置该选项后将和历史版本保持一致不进行校验
END; 
/ 

ORA

TD

strict_concat_functions

控制函数textanycat()和anytextcat()在参数存在空值时,对返回值兼容性的配置项。此参数不能和strict_text_concat_td同时设置。

MySQL兼容模式下,此参数无影响。

  • 不设置此配置项时,函数textanycat()和anytextcat()的返回值默认与Oracle保持一致。
  • 设置此配置项时,若函数textanycat()和anytextcat()的参数存在空值,则返回值也为空值,保留与Oracle和Teradata兼容模式下不同的结果。

例如,不设置此配置项时,函数textanycat()和anytextcat()的返回值与Oracle保持一致:

SELECT textanycat('gauss', cast(NULL as BOOLEAN));
 textanycat
------------
 gauss
(1 row)

SELECT 'gauss' || cast(NULL as BOOLEAN); --这种情况下,||运算符会被转换为函数textanycat
 ?column?
----------
 gauss
(1 row)

设置此配置项时,保留与Oracle和Teradata兼容模式下不同的结果:

SELECT textanycat('gauss', cast(NULL as BOOLEAN));
 textanycat
------------

(1 row)

SELECT 'gauss' || cast(NULL as BOOLEAN); --这种情况下,||运算符会被转换为函数textanycat
 ?column?
----------

(1 row)

ORA

TD

strict_text_concat_td

Teradata兼容模式下,控制函数textcat()、textanycat()和anytextcat()在参数存在空值时,对返回值兼容性的配置项。此参数不能和strict_concat_functions同时设置。

  • 不设置此配置项时,Teradata兼容模式下函数textcat()、textanycat()和anytextcat()的返回值与GaussDB(DWS)一致。
  • 设置此配置项时,若Teradata兼容模式下函数textcat()、textanycat()和anytextcat()的参数存在空值,则返回值为空值。

例如,不设置此配置项时,函数textcat()、textanycat()和anytextcat()的返回值与GaussDB(DWS)保持一致:

td_data_compatible_db=# SELECT textcat('abc', NULL);
textcat
---------
abc
(1 row)
td_data_compatible_db=# SELECT 'abc' || NULL; --这种情况下,||运算符会被转换为函数textcat()
?column?
----------
abc
(1 row)

设置此配置项时,若函数textcat()、textanycat()和anytextcat()的返回值有空值,则返回NULL:

td_data_compatible_db=# SELECT textcat('abc', NULL);
textcat
---------

(1 row)
td_data_compatible_db=# SELECT 'abc' || NULL;
?column?
----------

(1 row)

TD

compat_display_ref_table

设置视图中列的显示格式。

  • 不设置该选项时默认带前缀,即tab.col的格式。
  • 设置该选项时与原始定义一致,原始定义带前缀则显示,否则不显示。
SET behavior_compat_options='compat_display_ref_table';
CREATE OR REPLACE VIEW viewtest2 AS SELECT a.c1, c2, a.c3, 0 AS c4 FROM viewtest_tbl a;
SELECT pg_get_viewdef('viewtest2');
pg_get_viewdef
-----------------------------------------------------
SELECT a.c1, c2, a.c3, 0 AS c4 FROM viewtest_tbl a;
(1 row)

ORA

TD

para_support_set_func

列存表中控制函数COALESCE()、NVL()、GREATEST()、LEAST()入参是否支持多结果集表达式。

  • 不设置此配置项时,函数入参包含多结果集表达式时,直接报错不支持。
1
2
SELECT COALESCE(regexp_split_to_table(c3,'#'), regexp_split_to_table(c3,'#')) FROM regexp_ext2_tb1 ORDER BY 1 LIMIT 5;
ERROR:  set-valued function called in context that cannot accept a set
  • 设置此配置项时,支持函数入参包含多结果集表达式。
1
2
3
4
5
6
7
8
9
SELECT COALESCE(regexp_split_to_table(c3,'#'), regexp_split_to_table(c3,'#')) FROM regexp_ext2_tb1 ORDER BY 1 LIMIT 5;
 coalesce
----------
 a
 a
 a
 a
 a
(5 rows)

ORA

TD

disable_select_truncate_parallel

控制分区表的truncate等ddl的锁等级。

  • 设置此配置项时,将禁止分区表的不同分区上truncate与DML(如select)的并发,允许分区表上select的FQS(快速下发)。在OLTP场景下分区表上的简单查询较多,并且没有分区表不同分区truncate与DML并发的需求,可以考虑设置此配置项。
  • 不设置此配置项时,分区表上不同分区的select与truncate可以并发进行,同时关闭分区表的FQS(快速下发)来避免可能的不一致问题。

ORA

TD

MySQL

bpchar_text_without_rtrim

Teradata兼容模式下,设置此参数时,控制bpchar到text转换保留右侧空格,如果实际长度不足bpchar指定的长度,对其进行补空格操作,兼容Teradata对bpchar字符串的处理风格。

当前不支持“比较字符串时忽略尾部空格”,拼接后结果如果存在尾部空格,进行比较时会对空格敏感。

例如,设置参数时:

td_compatibility_basic_db=# select length('a'::char(10)::text);
length
--------
10
(1 row)

td_compatibility_basic_db=# select length('a'||'a'::char(10));
length
--------
11
(1 row)

TD

convert_empty_str_to_null_td

Teradata兼容模式下,设置此参数时,控制to_date, to_timestamp和to_number类型转换函数处理空串时,返回null;同时控制to_char函数处理date类型入参时返回的格式。

例如:

未设置此参数时:

td_compatibility_db=# select to_number('');
 to_number 
-----------
         0
(1 row)

td_compatibility_db=# select to_date('');
ERROR:  the format is not correct
DETAIL:  invalid date length "0", must between 8 and 10.
CONTEXT:  referenced column: to_date

td_compatibility_db=# select to_timestamp('');
      to_timestamp
------------------------
 0001-01-01 00:00:00 BC
(1 row)

td_compatibility_db=# select to_char(date '2020-11-16');
        to_char         
------------------------
 2020-11-16 00:00:00+08
(1 row)

设置此参数,若to_number, to_date, to_timestamp函数的参数有空串时:

td_compatibility_db=# select to_number('');
 to_number 
-----------

(1 row)

td_compatibility_db=# select to_date('');
 to_date 
---------

(1 row)

td_compatibility_db=# select to_timestamp('');
 to_timestamp
--------------

(1 row)

td_compatibility_db=# select to_char(date '2020-11-16');
  to_char   
------------
 2020/11/16
(1 row)

TD

disable_case_specific

控制字符类型匹配时是否忽略大小写。仅在Teradata兼容模式下生效。

  • 不设置此配置项时,字符类型匹配时,字符的大小写敏感。
  • 设置此配置项时,字符类型匹配时,字符的大小写不敏感。

设置此配置项后会影响的字符类型包括CHAR、TEXT、BPCHAR、VARCHAR、NVARCHAR五种类型,会被影响的操作符包括<、>、=、>=、<=、!=、<>、!=、like、not like、in、not in共12种操作符以及case when、decode 表达式。

注意:

由于该配置项开启后,字符类型前会增加UPPER函数进而会影响估算逻辑,需要使用增强的估算模型。(建议设置:cost_param=16、cost_model_version = 1、join_num_distinct=-20、qual_num_distinct=200)

TD

enable_interval_to_text

控制interval到text类型的隐式转换功能。

  • 设置此选项时,支持interval类型到text类型的隐式转换。
    SELECT TO_DATE('20200923', 'yyyymmdd') - TO_DATE('20200920', 'yyyymmdd') = '3'::text;
    ?column?
    ----------
    f
    (1 row)
  • 不设置此选项时,不支持interval类型到text类型的隐式转换。
    SELECT TO_DATE('20200923', 'yyyymmdd') - TO_DATE('20200920', 'yyyymmdd') = '3'::text;
    ?column?
    ----------
    t
    (1 row)

ORA

TD

MySQL

light_object_mtime

控制pg_object系统表mtime字段是否会记录对象行为的操作。

  • 设置此选项时,GRANT/REVOKE/TRUNCATE操作不被mtime记录即不更新mtime字段。
  • 不设置此选项时(默认行为),ALTER操作、COMMENT、GRANT/REVOKE和TRUNCATE均会被mtime记录即更新mtime字段。

ORA

TD

MySQL

table_skewness_warning_threshold

参数说明:设置用于表倾斜告警的阈值。

参数类型:SUSET

取值范围:浮点型,0~1

默认值:1

table_skewness_warning_rows

参数说明:设置用于表倾斜告警的行数。

参数类型:SUSET

取值范围:整型,0~INT_MAX

默认值:100000

max_cache_partition_num

参数说明:设置扩容重分布过程中列存节省内存模式的分区数目。如果超过分区数据目,则最早缓存的分区将直接写入列存文件中。

参数类型:SIGHUP

取值范围:整型,最小值为0,最大值为32767。

  • 0表示关闭列存节省内存模式。
  • 1~32767表示存分区表最多缓存的分区数目。

默认值:0

该参数用于扩容重分布,合理设置可以缓解列存分区表重分布过程中的内存消耗。但某些分区数据分布非常不均衡的表在重分布完成后,可能会产生较多小CU。如果出现较多小CU,需要通过VACUUM FULL来合并小CU。

enable_prevent_job_task_startup

参数说明:设置用于阻止job线程的启动。该参数属于系统内部参数,不建议用户修改设置。

参数类型:SIGHUP

取值范围:布尔型

  • on表示阻止启动job线程。当job周期到来时,不会启动job执行线程。
  • off表示允许启动job线程。当job周期到来时,会启动job执行线程,完成job中规定的操作。

默认值: off

该参数只需在CN上设置。

auto_process_residualfile

参数说明:控制残留文件记录功能的开关。

参数类型:SIGHUP

取值范围:布尔型

  • on表示打开残留文件记录功能。
  • off表示关闭残留文件记录功能。

默认值: off

enable_view_update

参数说明:用于设置是否开启视图更新功能。

参数类型:POSTMASTER

取值范围:布尔型

  • on表示启用视图更新功能。
  • off表示关闭视图更新功能。

默认值: off

view_independent

参数说明:用于设置是否开启视图与表、函数、同义词的解耦功能。基表恢复后目前已支持自动关联重建。

参数类型:SIGHUP

取值范围:布尔型

  • on表示启用视图解耦功能,存在视图依赖的表、函数、同义词及其他视图可以单独删除(临时表及临时视图除外),关联视图保留但不可用。
  • off表示关闭视图解耦功能,存在视图依赖的表、函数、同义词及其他视图不可以单独删除,仅可使用cascade级联删除。

默认值: off

bulkload_report_threshold

参数说明:设置导入导出统计信息上报阈值。

参数类型:SIGHUP

取值范围:整型,0~INT_MAX

默认值:50

assign_abort_xid

参数说明:查询时将指定的xid判断为需要abort的事务。

参数类型:USERSET

取值范围:指定xid的字符串

此参数只用于用户误删数据(delete操作)后进行快速恢复。其他场景禁止使用,否则造成事务可见性错误问题。