更新时间:2025-06-27 GMT+08:00
分享

修改GaussDB(DWS)集群GUC参数

集群创建成功后,用户可以根据实际需要修改集群的数据库参数。在GaussDB(DWS)管理控制台,您可以设置一些常用的数据库参数,详情请参见修改参数。也可以查看历史参数修改记录,详情请参见查看参数修改历史。单击“导出”按钮可导出集群相关参数配置。如需查看或设置其他数据库参数,您可以通过SQL命令的方式,详情请参见配置GUC参数

前提条件

只有当集群无运行中的任务时,才能修改参数。

修改参数

  1. 登录GaussDB(DWS)管理控制台。
  2. 在左侧导航栏中,单击“专属集群 > 集群列表
  3. 在集群列表中找到所需要的集群,单击集群名称,进入“集群详情”页面。
  4. 单击“参数修改”页签,并在“参数列表”模块修改相应的参数值,然后单击“保存”

    在参数列表上方单击下拉列表,可根据筛选条件(常用配置、功能控制配置、集群内存配置、集群磁盘配置、集群网络配置、SQL调优配置、SQL兼容性配置、所有配置)查找所需修改的参数,其中选择“常用配置”则显示集群所在区域高频次修改的参数前20条结果,如果没有统计数据,则使用自定义的配置。选择“所有配置”为可筛选配置的全集,即可查看所有参数。参数详情请参见参数说明

    单击搜索框,可根据“参数名称”和“是否重启集群”查找相应参数。

    图1 修改参数

  5. “修改预览”窗口,确认修改无误后,单击“保存”
  6. 用户可根据修改参数所在行的“是否重启集群”列,判断集群是否进行重启操作。

    • 若修改参数无需进行重启集群操作,则参数修改后立即生效。
    • 若修改参数需进行重启集群操作,参数修改任务下发成功后页面显示修改后的参数值,待集群重启成功后修改的参数值生效;同时集群状态会显示“待重启”并禁用部分运维操作,重启集群后状态会恢复正常。

查看参数修改历史

由于修改参数的操作可能较频繁,如果多次修改后无法确认哪些参数已经生效,可按如下流程检查参数修改记录。

操作步骤

  1. 登录GaussDB(DWS)管理控制台。
  2. 在左侧导航栏中,单击“专属集群 > 集群列表
  3. 在集群列表中找到所需要的集群,单击集群名称,进入“集群详情”页面。
  4. 单击“参数修改”页签,并在页面顶部切换到“修改历史”模块。

    • 如果修改参数无需进行重启集群操作,则参数修改后立即生效,修改状态为“已同步”。
    • 如果修改参数需进行重启集群操作,则修改记录的状态为“需重启生效”,此时单击左侧的下拉展开可以看到具体哪些参数未生效。在重启集群后,该记录的状态会更新为“已同步”。

  5. 该页面默认查询一段时间之内的修改记录,同时也可以在右上角的输入框中输入要查询的参数,可以查找该参数所有的修改。

导出参数列表

  1. 登录GaussDB(DWS)管理控制台。
  2. 在左侧导航栏中,单击“专属集群 > 集群列表
  3. 在集群列表中找到所需要的集群,单击集群名称,进入“集群详情”页面。
  4. 单击“参数修改”页签,并在页面顶部单击“导出”按钮。可导出集群相关配置参数。

    图2 导出参数配置

功能控制配置参数说明

表1 功能控制配置参数说明

参数名称

参数描述

取值范围

audit_enabled

控制审计进程的开启和关闭。审计进程开启后,将从管道读取后台进程写入的审计信息,并写入审计文件。

on或者off

audit_space_limit

审计文件占用的磁盘空间总量。单位为KB。

1,024 ~ 1,073,741,824

autoanalyze

标识是否允许在生成计划的时候,对于“统计信息完全缺失”或“修改量达到analyze阈值”的表进行统计信息自动收集,当前不支持对外表触发autoanalyze,不支持对带有“ON COMMIT [DELETE ROWS|DROP]”选项的临时表触发autoanalyze,如需收集,需用户手动执行analyze操作。如果在auto analyze某个表的过程中数据库发生异常,当数据库正常运行之后再执行语句有可能仍提示需要收集此表的统计信息。此时需要用户对该表手动执行一次analyze操作,以同步统计信息数据。

on或者off

autovacuum_max_workers

设置能同时运行的自动清理线程的最大数量。其中0表示不会自动进行autovacuum。

0 ~ 128

autovacuum_max_workers_hstore

设置hstore表automerge的线程数量,该值不能大于autovacuum_max_workers。

修改本参数需要同步调整autovacuum_max_workers为原值加上autovacuum_max_workers_hstore的大小。

0 ~ 128

autovacuum_naptime

设置两次自动清理操作的时间间隔。单位为秒(s)。

1 ~ 2,147,483

autovacuum_vacuum_cost_delay

设置在自动VACUUM操作里使用的开销延迟数值。

-1 ~ 100

behavior_compat_options

数据库兼容性行为配置项,该参数的值由若干个配置项用逗号隔开构成。此参数选项中strict_concat_functions和strict_text_concat_td不能同时设置。

-

checkpoint_segments

设置周期内所保留的最少WAL日志段文件数量。每个日志文件大小为16MB。

1 ~ 2,147,483,646

ddl_lock_timeout

通过该参数单独指定阻塞DDL语句锁等待的时间,当申请的锁等待时间超过设定值时,系统会报错。

0 ~ 2,147,483,647

enable_resource_record

是否开启资源记录功能。

on或者off

enable_resource_track

是否开启资源监控功能。

on或者off

enable_track_record_subsql

设置是否开启子语句记录归档功能。开启时,存储过程、匿名块内部的子语句会被记录归档到相应的INFO表(GS_WLM_SESSION_INFO)。此参数为会话级参数,可在与CN的连接会话中设置生效,仅影响该会话连接中的语句;也可在CN和DN上同时设置,能全局生效。

on或者off

enable_user_metric_persistent

设置是否开启用户历史资源监控转存功能。开启时,对于PG_TOTAL_USER_RESOURCE_INFO视图中数据,会定期采样保存到PG_WLM_USER_RESOURCE_HISTORY系统表中。

on或者off

enable_view_update

用于设置是否开启视图更新功能。

on或者off

extra_float_digits

调整浮点值显示的数据位数,浮点类型包括float4、float8 以及几何数据类型。参数值加在标准的数据位数上(FLT_DIG或DBL_DIG中合适的)。

-15 ~ 3

failed_login_attempts

输入密码错误的次数达到该参数所设置的值时,账户将会被自动锁定。配置为0时表示不限制密码输入错误的次数。

0 ~ 1,000

instr_unique_sql_count

控制是否收集Unique SQL,以及收集数量限制。

0 ~ 2,147,483,647

job_queue_processes

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

0 ~ 1,000

lockwait_timeout

控制单个锁的最长等待时间。当申请的锁等待时间超过设定值时,系统会报错。单位为毫秒(ms)。

0 ~ 2,147,483,647

max_active_statements

设置全局的最大并发数量。此参数只应用到CN,且针对一个CN上的执行作业。设置为-1和0表示对最大并发数不做限制。

-1 ~ 2,147,483,647

max_files_per_node

限制单个节点上单个SQL打开的文件最大数量。

-1 ~ 2,147,483,647

max_prepared_transactions

设置可以同时处于“预备”状态的事务的最大数目。增加此参数的值会使GaussDB(DWS)比系统默认设置需要更多的System V共享内存。

0 ~ 536,870,911

max_process_memory_auto_adjust

设置是否开启max_process_memory参数的自动调整功能。

on或者off

object_mtime_record_mode

用于设置PG_OBJECT系统表中mtime字段的更新行为。

  • default:表示默认行为包括ALTER、COMMENT、GRANT/REVOKE和TRUNCATE操作会更新mtime字段。
  • none:表示不更新mtime字段。
  • disable_acl:表示GRANT/REVOKE操作不更新mtime字段。
  • disable_truncate:表示TRUNCATE操作不更新mtime字段。
  • disable_partition:表示分区表相关ALTER操作不更新mtime字段。

-

plog_merge_age

该参数用于控制性能日志数据输出的周期。

0 ~ 2,147,483,647

random_function_version

控制analyze在进行数据采样时选取的random函数版本。

0 ~ 1

resource_track_cost

设置对语句进行资源监控的最小执行代价。值为-1时,不进行资源监控。值大于或等于0时,执行语句的代价大于或者等于10并且超过这个参数值就会进行资源监控。

-1 ~ 2,147,483,647

resource_track_duration

设置资源监控实时视图中记录的语句执行结束后进行归档的最小执行时间,单位为秒。值为0时,资源监控实时视图中记录的所有语句都进行历史信息归档。值大于0时,资源监控实时视图中记录的语句的执行时间超过所设置的值时进行历史信息归档。

0 ~ 2,147,483,647

resource_track_level

设置当前会话的资源监控的等级。该参数只有当参数enable_resource_track为on时才有效。

  • none:不开启资源监控功能。
  • query:开启query级别资源监控功能,开启此功能会把SQL语句的计划信息(类似explain输出信息)记录到top SQL中。
  • perf:开启perf级别资源监控功能,开启此功能会把包含实际执行时间和执行行数的计划信息(类似explain analyze输出信息)记录到top SQL中。
  • operator:开启operator级别资源监控功能,开启此功能不仅会把包含实际执行时间和执行行数的信息记录到top SQL中,还会把算子级别执行信息刷新到top SQL中。

-

security_enable_options

控制安全模式下可以解禁的操作。

  • grant_to_public:表示允许安全模式下使用grant to public功能。
  • grant_with_grant_option:表示允许安全模式下使用with grant option功能。
  • foreign_table_options:表示允许安全模式下使用外表操作功能,不需要显式赋予用户useft权限。

-

session_timeout

Session闲置超时时间,单位为秒,0表示关闭超时限制。

0 ~ 86,400

space_once_adjust_num

空间管控和空间统计功能中,控制慢速构建与细粒度校准操作中每次处理的文件个数阈值。 0表示不启用慢速构建和细粒度校准功能。 文件个数阈值影响数据库资源,建议合理设置。

说明:

该参数仅8.1.3及以上集群版本支持。

0 ~ 2,147,483,647

statement_timeout

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

0 ~ 2,147,483,647

timezone

设置显示和解释时间类型数值时使用的时区。

-

topsql_retention_time

设置历史TopSQL中gs_wlm_session_info和gs_wlm_operator_info表中数据的保存时间,单位为天。设置此GUC参数启用数据保存功能前,请先清理gs_wlm_session_info和gs_wlm_operator_info表中的数据。

  • 值为0时,表示数据永久保存。
  • 值大于0时,表示数据能够保存的对应天数。

0 ~ 3,650

user_metric_retention_time

设置用户历史资源监控数据的保存天数。该参数仅在enable_user_metric_persistent为on时有效。

0 ~ 3,650

view_independent

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

on或者off

wlm_memory_feedback_adjust

是否启用动态负载管理的内存负反馈。参数值格式如下所示:

  • on:表示开启内存负反馈。
  • off:表示关闭内存负反馈。

on或者off

enable_generate_plan_hash

设置是否生成plan hash hint_option:设置绑定outline和手工outline生效优先级。当存在手动hint和plan management的hint时,hint生效的优先原则。

说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

on或者off

turbo_engine_version

控制执行器是否可以走turbo引擎。0代表关闭,3代表所有算子尽可能走turbo引擎。

说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

0 ~ 3

analyze_predicate_column_threshold

控制开启谓词列analyze。等于0则关闭谓词列收集功能;大于0代表开启谓词列收集功能,且只针对表列数大于等于此值的进行收集,该参数开放主要是提升大表性能。

说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

0 ~ 10,000

syscache_clean_policy

控制syscache内存的清理策略。

[0,1],[0,1],[0,2147483647]

spill_compression

控制执行器下盘压缩算法。

  • lz4:前向兼容。
  • zstd:新增加压缩算法。
    说明:

    该参数仅存算分离的9.1.0及以上集群版本支持。

-

hudi_sync_max_commits

设置Hudi同步任务同步的最大commits的数量。

说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

-1 ~ 2,147,483,647

enable_hstore_binlog_table

用于控制是否可以创建binlog表。

说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

on或者off

binlog_consume_timeout

用于控制在线缩容或vacuum full binlog表时,循环判断binlog记录是否都被消费的超时时间。

说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

0 ~ 86,400

cu_preload_max_distance

控制列存v3预读加速时对于每个扫描的表允许提前加载的CU_id与当前正在加载CU_id的最大距离。

说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

0 ~ 1,024

cu_preload_count

控制列存v3预读加速时对于每个扫描的表允许提前加载的CU的个数。

说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

0 ~ 10,000

fine_dr_consistency_check_mode

新增细粒度容灾校验一致性的模式。

  • none
  • warning
  • error
说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

-

hint_option

设置绑定outline和手工outline生效优先级。

  • bind_hints_first:当绑定的outline和手工写的hint同时存在时,outline对应版本支持的hint优先手工hint生效。比如:821.001版本的outline支持leading、join、scan hint,那么当SQL语句中存在手工写的这三类hint时,只有outline中的这三类hint生效,手工写的hint不生效。除这三类hint外的手工hint和outline同时生效。
  • ignore_manual_hints:表示语句存在绑定outline时,忽略语句中的手动写的hint。
  • ignore_bind_hints:表示语句存在绑定outline时,忽略绑定的outline中的hint。
说明:

该参数仅存算分离的9.1.0及以上集群版本支持。

-

enable_concurrency_scaling

动态弹性逻辑集群开关。

说明:

该参数仅存算分离的9.1.0.200及以上集群版本支持。

on或者off

concurrency_scaling_max_idle_time

用于指定弹性VW的最大空闲时间,如果超过则进入弹性VW销毁流程。默认单位是分钟。

说明:

该参数仅存算分离的9.1.0.200及以上集群版本支持。

0 ~ 60

concurrency_scaling_limit_per_main_vw

用于限制每个主VW所能拉起的最大弹性VW的数量。

说明:

该参数仅存算分离的9.1.0.200及以上集群版本支持。

0 ~ 32

concurrency_scaling_max_vw_active_statements

用于指定弹性VW上所能执行的最大并发数。

说明:

该参数仅存算分离的9.1.0.200及以上集群版本支持。

0 ~ 1,000,000

concurrency_scaling_max_waiting_statements

用于指定全局排队队列中,触发拉起弹性VW的弹性作业排队数量,如果大于,则进入申请拉起弹性VW流程。

说明:

该参数仅存算分离的9.1.0.200及以上集群版本支持。

0 ~ 1,000,000

server_version

报告服务器版本号。该参数设置前需联系运维人员评估,错误值可能导致兼容性问题。

字符串

server_version_num

报告服务器版本号。该参数设置前需联系运维人员评估,错误值可能导致兼容性问题。

整数

集群内存配置参数说明

表2 集群内存配置参数说明

参数名称

参数描述

取值范围

comm_usable_memory

单个DN内TCP代理通信库或SCTP通信库缓存最大可使用内存。单位为KB。

102,400 ~ 1,073,741,823

cstore_buffers

设置列存和OBS、HDFS外表列存格式(orc、parquet、carbondata)所使用的共享缓冲区的大小。单位为KB。

16,384 ~ 1,073,741,823

maintenance_work_mem

设置在维护性操作(比如VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等)中可使用的最大的内存。该参数的设置会影响VACUUM、VACUUMFULL、CLUSTER、CREATE INDEX的执行效率。

1,024 ~ 2,147,483,647

max_process_memory

设置一个数据库节点可用的最大物理内存。单位:KB。默认值:物理内存 * 0.8 / (1 + 集群最大主DN数)。

2,097,152 ~ 2,147,483,647

query_max_mem

设置执行作业所能够使用的最大内存。如果设置的query_max_mem值大于0,当作业执行时所使用内存超过该值时,将报错退出。

0 ~ 2,147,483,647

session_history_memory

设置历史查询视图的内存大小。单位:KB。

10,240 ~ 2,147,483,647

shared_buffers

设置GaussDB(DWS)使用的共享内存大小。增加此参数的值会使GaussDB(DWS)比系统默认设置需要更多的System V共享内存。单位:8KB。

16 ~ 1,073,741,823

udf_memory_limit

控制每个CN、DN执行UDF时可用的最大物理内存量。单位:KB。

204,800 ~ 2,147,483,647

work_mem

设置内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小。ORDER BY,DISTINCT和merge joins都要用到排序操作。Hash表在散列连接、散列为基础的聚集、散列为基础的IN子查询处理中都要用到。对于复杂的查询,可能会同时并发运行好几个排序或者散列操作,每个都可以使用此参数所声明的内存量,不足时会使用临时文件。同样,好几个正在运行的会话可能会同时进行排序操作。因此使用的总内存可能是work_mem的好几倍。

64 ~ 2,147,483,647

集群磁盘配置参数说明

表3 集群磁盘配置参数说明

参数名称

参数描述

取值范围

sql_use_spacelimit

限制单个SQL在单个DN上,触发落盘操作时,落盘文件的空间大小,管控的空间包括普通表、临时表以及中间结果集落盘占用的空间。单位为KB。其中-1表示没有限制。

-1 ~ 2,147,483,647

temp_file_limit

限制一个会话中,触发落盘操作时,单个落盘文件的空间大小。例如一次会话中,排序和哈希表使用的临时文件,或者游标占用的临时文件。

-1 ~ 2,147,483,647

集群网络配置参数说明

表4 集群网络配置参数说明

参数名称

参数描述

取值范围

comm_max_stream

TCP代理通信库或SCTP通信库支持的最大并发数据流数。该参数值必须大于并发数*每并发平均stream算子数*(smp的平方)。

1 ~ 65,535

max_connections

允许和数据库连接的最大并发连接数。此参数会影响集群的并发能力。

100 ~ 262,143

max_pool_size

CN的连接池与其它某个CN/DN的最大连接数。

1 ~ 65,535

SQL调优配置参数说明

表5 SQL调优配置参数说明

参数名称

参数描述

取值范围

agg_redistribute_enhancement

当进行Agg操作时,如果包含多个group by列且均不为分布列,进行重分布时会选择某一group by列进行重分布。本参数控制选择重分布列的策略。

on或者off

best_agg_plan

参数用于控制优化器生成哪种hashagg的计划。

0 ~ 3

cost_model_version

控制应用场景中估算时cost使用的模型。该参数的影响范围主要涵盖:表达式distinct估算、HashJoin代价模型、行数估算、重分布时分布键的选择及Aggregate的行数估算等。

0 ~ 4

default_statistics_target

默认analyze的比例。

-100 ~ 10,000

enable_codegen

标识是否允许开启代码生成优化,目前代码生成使用的是LLVM优化。on表示允许开启代码生成优化。off表示不允许开启代码生成优化。

-

enable_extrapolation_stats

标识对于日期类型是否允许基于历史统计信息使用推理估算的逻辑。使用该逻辑对于未及时收集统计信息的表可以增大估算准确的可能性,但也存在错误推理导致估算过大的可能性,需要对于日期类型数据定期插入的场景开启此开关。

on或者off

hashjoin_spill_strategy

选择hashjoin下盘策略:

  • 0:当内表较大,并且多次下盘无法分开时,尝试外表是否可以放到数据库可用内存建立哈希表。如果内外表均很大,执行NestLoop。
  • 1:当内表较大,并且多次下盘无法分开时,尝试外表是否可以放到数据库可用内存建立哈希表。如果内外表均很大,强制执行HashJoin。
  • 2:当内表较大,并且多次下盘无法分开时,强制执行HashJoin。
  • 3:当内表较大,并且多次下盘无法分开时,尝试外表是否可以放到数据库可用内存建立哈希表。如果内外表均很大,则报错。
  • 4:当内表较大,并且多次下盘无法分开时,则报错。

0 ~ 6

max_streams_per_query

控制查询计划中Stream节点的数目。

-1 ~ 10,000

qrw_inlist2join_optmode

控制是否使用inlist-to-join查询重写。

  • disable:关闭inlist2join查询重写。
  • cost_base:基于代价的inlist2join查询重写。
  • rule_base:基于规则的inlist2join查询重写,即强制使用inlist2join查询重写。
  • 任意正整数:inlist2join查询重写阈值,即list内元素个数大于该阈值,进行inlist2join查询重写。

-

query_dop

用户自定义的查询并行度。[1,64]:打开固定SMP功能,系统会使用固定并行度。[-64,-1]:打开SMP自适应功能,并限制自适应选取的最大并行度。

-64 ~ 64

rewrite_rule

标识开启的可选查询重写规则。有部分查询重写规则是可选的,开启它们并不能总是对查询效率有提升效果。在特定的客户场景中,通过此GUC参数对查询重写规则进行设置,使得查询效率最优。

  • none:不使用任何可选查询重写规则。
  • lazyagg:使用Lazy Agg查询重写规则(消除子查询中的聚集运算)。
  • magicset:使用Magic Set查询重写规则(从主查询中下推条件到提升的子链接)。
  • uniquecheck:使用Unique Check重写规则(允许目标列不含聚集函数的表达式子链接场景提升,需在子链接按关联列聚集后目标列值唯一才能开启,建议专业调优人员使用)。
  • disablerep:使用禁止复制表的子链接提升规则(针对复制表禁止子链接提升)。
  • projection_pushdown:使用Projection Pushdown重写规则(子查询中消除父查询不使用的列)。
  • or_conversion:使用OR转换重写规则(消除执行效率低下的关联OR条件)。
  • plain_lazyagg:使用Plain Lazy Agg查询重写规则(消除单子查询中的聚集操作)。该选项仅8.1.3.100及以上集群版本支持。
  • eager_magicset:使用eager_magicset查询重写规则(从主查询中下推条件到子查询)。该选项仅8.2.0及以上集群版本支持。
  • casewhen_simplification:使用casewhen语句改写的重写规则,开启后对(case when xxx then const1 else const2)=const1场景进行改写。该选项仅8.3.0及以上集群版本支持。
  • outer_join_quality_imply:left outer join和right outer join存在等值关联条件时,外表关联列上的表达式条件下推到内表的关联列上。该选项仅8.3.0及以上集群版本支持。
  • inlist_merge:使用inlist_or_inlist查询重写规则,支持基表相同列的or语句合并,开启后对(where a in (list1) or a in (list2))进行合并改写,合并后可支持inlist2join。该选项仅8.3.0及以上集群版本支持。
  • subquery_qual_pull_up:对于无法提升的子查询,若子查询与其它表进行关联的关联列在子查询内部有过滤条件,支持从子查询中提取过滤条件并传递到关联条件另一侧。目前只支持不存在类型转换的var op const形式,例如a > 2。打开该开关时,则认为outer_join_quality_imply也是打开的。该选项仅9.1.0及以上集群版本支持。

-

SQL兼容性配置参数说明

表6 SQL兼容性配置参数说明

参数名称

参数描述

取值范围

full_group_by_mode

用于控制disable_full_group_by_mysql语法开关打开后的两种不同行为。

  • nullpadding:表示对于非聚集列而言,对该列NULL值进行填充,取该列非NULL值,结果集可能为不同行。
  • notpadding:表示对于非聚集列而言,不处理NULL值,取该行整行数据,非聚集列结果集为随机的一行。

-

相关文档