其它选项
enable_default_ustore_table
参数说明:指定是否开启默认支持Ustore存储引擎,该参数为on时,创建的表类型都为Ustore表。
参数类型:布尔型
- on表示开启默认支持Ustore存储引擎。
- off表示不开启默认支持Ustore存储引擎。
默认值:on
设置方式:该参数属于USERSET类型,请参见表1中对应设置方法进行设置。特别需要注意,使用Ustore表,必须要开启track_counts和track_activities参数,否则会引起空间膨胀。升级场景下该参数的默认值会优先保证兼容性,即升级后的默认值与老版本的取值一致。
enable_ustore
参数说明:指定是否开启Ustore存储引擎,该参数为on时,支持创建Ustore表。特别需要注意,使用Ustore表,必须要开启track_counts和track_activities参数,否则会引起空间膨胀。
该参数属于POSTMASTER类型,请参见表1中对应设置方法进行设置。
取值范围:[off,on]
默认值:on
enable_segment_datafile_preallocate
参数说明:指定是否开启段页式文件扩展时立即分配磁盘空间模式。该参数为on时,表示文件扩展时优先使用fallocate立即分配磁盘空间,如果系统不支持fallocate,则使用逐字节写零方式申请磁盘空间;该参数为off时,表示文件扩展时不立即分配磁盘空间,文件以空洞方式增长。
该参数属于SIGHUP类型,请参见表1中对应设置方法进行设置。
取值范围:[off,on]
默认值:on
reserve_space_for_nullable_atts
参数说明:指定是否为Ustore表的可空属性预留空间。该参数为on时默认为ustore表的可空属性预留空间。
该参数属于USERSET类型,请参见表1中对应设置方法进行设置。
取值范围:[off,on]
默认值:on
server_version
参数说明:报告服务器版本号(字符串形式)。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。该参数不推荐使用,如想查询服务器版本号,可通过函数opengauss_version()获取。
取值范围:字符串
默认值:9.2.4
server_version_num
参数说明:报告服务器版本号(整数形式)。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围:整数
默认值:90204
block_size
参数说明:报告当前数据库所使用的块大小。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围:8192
默认值:8192
segment_size
参数说明:报告当前数据库所使用的段文件大小。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
单位: 8KB
默认值:131072, 即1GB。
max_index_keys
参数说明:报告当前数据库能够支持的索引键值的最大数目。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
默认值:32
integer_datetimes
参数说明:报告是否支持64位整数形式的日期和时间格式。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围:布尔型
- on表示支持。
- off表示不支持。
默认值:on
lc_collate
参数说明:报告当前数据库的字符串排序区域设置。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
默认值:依赖于数据库安装部署时的配置
lc_ctype
参数说明:报告当前数据库的字母类别区域设置。如:哪些字符属于字母,它对应的大写形式是什么。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
默认值:依赖于数据库安装部署时的配置
max_identifier_length
参数说明:报告当前系统允许的标识符最大长度。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围:整型
默认值:63
server_encoding
参数说明:报告当前数据库的服务端编码字符集。
默认情况下,gs_initdb会根据当前的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
默认值:在创建数据库的时候由当前系统环境决定的。
basebackup_timeout
参数说明:备份传输完成后连接无读写的超时时间。
通过gs_basebackup工具作传输时,如果指定较高压缩率时,可能在传输表空间完成后超时(客户端需要压缩传输数据)。
取值范围:整型,0 ~ INT_MAX,单位为秒。其中0表示禁用该功能。
默认值:600s
datanode_heartbeat_interval
参数说明:设置心跳线程间心跳消息发送时间间隔,建议值不超过wal_receiver_timeout / 2。
该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
取值范围:整型,1000~60000(毫秒)。
默认值:1s
max_concurrent_autonomous_transactions
参数说明:自治事务最大连接数,同一时间自治事务执行的最大并发数。当设置为0时,将无法执行自治事务。
参数类型:整型
参数单位:无
取值范围:0~10000,理论最大值为10000,实际最大值为动态值,计算公式为“262143 - job_queue_processes - autovacuum_max_workers - max_inner_tool_connections - max_connections - AUXILIARY_BACKENDS - AV_LAUNCHER_PROCS”,job_queue_processes、autovacuum_max_workers、max_inner_tool_connections和max_connections的值取决于对应GUC参数的设置,AUXILIARY_BACKENDS为预留辅助线程数固定为20,AV_LAUNCHER_PROCS为预留autovacuum的launcher线程数固定为2。
默认值:200(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存);150(96核CPU/768G内存);120(80核CPU/640G内存);100(64核CPU/512G内存);80(60核CPU/480G内存);40(32核CPU/256G内存);20(16核CPU/128G内存);10(8核CPU/64G内存,4核CPU/32G内存,4核CPU/16G内存)。
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:根据实际业务需要和硬件配置设置此参数,建议不超过max_connections的1/10。若仅调大此参数,未同比例调整内存参数,业务压力大时,容易出现内存不足,报错提示“memory is temporarily unavailable”。
若升级过程中涉及此参数范围变更,并且在commit前修改了此参数,则如果执行升级回滚,需要将此参数调整至升级前允许的范围,否则可能导致数据库无法启动。
enable_seqscan_fusion
参数说明:控制是否打开SeqScan优化。
该参数属于SUSET类型参数,请参见表1中对应设置方法进行设置。
取值范围:布尔型
- on表示打开SeqScan优化。
- off表示关闭SeqScan优化。
默认值:off
该参数只能优化EXPLAIN ANALYZE语句的seqscan算子的执行时间。
cluster_run_mode
参数说明:双数据库实例容灾场景标识DN节点属于主数据库实例还是备数据库实例。单数据库实例使用默认值主数据库实例。
该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
取值范围:枚举类型
- cluster_primary表示节点是主数据库实例的节点。
- cluster_standby表示节点是备数据库实例的节点。
默认值:cluster_primary
acceleration_with_compute_pool
参数说明:在查询包含OBS时,通过该参数决定查询是否通过计算资源池进行加速。(由于规格变更,当前版本已经不再支持本特性,请不要使用)
该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
取值范围:布尔型
- on表示包含有OBS或的查询在计算资源池可用时,会根据代价评估决定是否通过计算资源池对查询加速。
- off表示任何查询都不会通过计算资源池进行加速。
默认值:off
dfs_partition_directory_length
参数说明:在HDFS文件系统上,构造HDFS VALUE分区表的分区目录时,目录名长度的上限值。
该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
取值范围:92-7999
默认值:512
max_resource_package
参数说明:云上环境中,加速数据库实例每个DN可同时运行任务的线程数的上限。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:0~2147483647
默认值:0
enable_gpi_auto_update
参数说明:控制在分区DDL命令中是否默认更新Global索引。
该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
取值范围:布尔型
- on表示默认更新Global索引,此时分区DDL无论带不带UPDATE GLOBAL INDEX子句,都会更新Global索引。
- off表示默认不更新Global索引,此时只有当分区DDL带UPDATE GLOBAL INDEX子句,才会更新Global索引。
默认值:off
enable_gsplsql_execopt
参数说明:控制是否优化Tuple模式存储过程函数的执行。
- Statement模式:通过perform或者call procedure()调用,存储过程函数执行过程为单独SQL语句。
- Tuple模式:通过targetlist,trigger方式调用,调用环境为执行态的1个元组输入。
该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用Tuple模式进行存储过程函数循环执行时,在存储过程初始化时分配并记录运行过程中不改变的信息,避免执行过程中无效的重复调用。
- off表示使用默认调用逻辑,每次循环都重新初始化信息。
默认值:on
multi_insert_min_rows
参数说明:限制使用批量插入的最小预估行数。可通过explain (verbose on) 观察执行计划是否包含“Batch Insert”,判断是否走了批量插入。
参数类型:整型
参数单位:无
取值范围:-1 ~ 2147483647,-1表示不使用批量插入,大于等于0时表示预估插入行数>=multi_insert_min_rows时使用批量插入,会针对insert select语句,使用批量插入提升性能。
默认值:1000
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值或者设置为1000以上,插入数据行数较小时使用批量插入可能导致插入性能劣化。
- 规格
默认配置下,astore表使用批量插入可以提升50%左右,ustore表使用批量插入可以提升60%左右。
- 约束
除了multi_insert_min_rows参数约束外,使用批量插入还有以下约束:
- 不支持insert select之外的语句。
- 不支持包含before和instead触发器的表,因为可能改变要插入的数据。
- 不支持sql包含volatile函数,因为volatile函数每次执行都会开启一个新事务,而使用batch insert批量成功的特性使其拿到的快照可能与普通insert不同。
- 不支持sql包含returning字句。
- 不支持upsert子句。
- 不支持unlogged表、临时表和全局临时表,使用批量插入反而可能性能劣化。
- 仅在b_format_version='5.7'和b_format_dev_version='s2'时,支持包含自增列(auto increment)的表。
示例: -- 创建表和数据 create table t(id int, c1 varchar(20), c2 varchar(40), c3 varchar(50)) with (storage_type=astore); create table t_tmp(id int, c1 varchar(20), c2 varchar(40), c3 varchar(50)) with (storage_type=astore); insert into t_tmp values (generate_series(1, 1000), '1111111111111111111', '222222222222222222222', '333333333333333333333333333333333'); analyze t_tmp; -- 插入1000行数据,循环1000次,使用批插1.2s, 不使用批插2.68s, 使用批插提升性能50%+ set multi_insert_min_rows=-1; DECLARE start_time bigint; end_time bigint; BEGIN start_time := dbe_utility.get_time(); for i in 1 .. 1000 loop insert into t select * from t_tmp; end loop; end_time := dbe_utility.get_time(); dbe_output.print_line('耗时:' ||(end_time - start_time)/100); END; / 耗时:2.68 set multi_insert_min_rows=0; DECLARE start_time bigint; end_time bigint; BEGIN start_time := dbe_utility.get_time(); for i in 1 .. 1000 loop insert into t select * from t_tmp; end loop; end_time := dbe_utility.get_time(); dbe_output.print_line('耗时:' ||(end_time - start_time)/100); END; / 耗时:1.2
enable_force_smp
参数说明:控制是否强制开启SMP。参数开启时,代价模型默认拉起stream线程的代价为空,当设置并行度并算子支持并行时强制选择并行路径。
该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
取值范围:布尔型
- on:表示使用强制开启SMP计划。
- off:表示不开启强制SMP计划。
默认值:off
- 该参数只对支持SMP的算子有效,具体请联系管理员。
- 另外,使用强制开启SMP还存在以下约束:
- SMP特性通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、I/O等等。本质上SMP是一种以资源换取时间的方式,在合适的场景以及资源充足的情况下,合理设置并行度来较好地提升性能。
- 如果在不合适的场景下(如数据量较少),或资源不足的情况下,可能引起性能的劣化。
- SMP非适用场景不支持此参数。
enable_partrouting_optimization
参数说明:控制是否支持分区表插入优化。
该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
取值范围:布尔型
- on表示支持分区表插入优化,针对inert select语句,当select包含常量分区键时,insert只需要做一次分区路由,提升性能。
- off表示不支持分区表插入优化,插入每一条数据前都需要做一次分区路由去确定插入哪一张分区表。
默认值:on
- 只支持INSERT SELECT语句。
- INSERT INTO ta SELECT FROM tb中,插入a表中所有分区键的值,对应SELECT结果集中的列值必须是常量(可以不存在该列,因为默认值也是恒定的)。
(1) INSERT INTO ta SELECT c,d FROM b WHERE tb.c='1'或SELECT '1' AS c, d FROM tb则可以判断结果列tb.c为常量。
(2) INSERT INTO ta SELECT c,d FROM b WHERE tb.c=func('1'); 如果func()不是volatile函数,也不是包含非常量参数的stable/immutable函数,则可以判断tb.c为常量。
(3) 如果列值为聚合函数的返回值,如:INSERT INTO ta SELECT count(c),d FROM b WHERE tb.c='1' GROUP BY c, d; 不能判断count(c)为常量。
- 不支持UPSERT子句。
- 不支持包含BEFORE和INSTEAD触发器的表,因为可能改变要插入的数据。