GaussDB数据库GUC参数修改参考

举报
HuaweiCloudDeveloper 发表于 2025/02/24 16:27:42 2025/02/24
121 0 0
【摘要】 修改GaussDB数据库GUC参数是运维工作与性能调优人员经常做得事项,这篇论文详细阐述了如何修改GUC参数以及修改之后验证修改的结果。

1 问题现象

GaussDB数据库在使用和优化过程中,部分参数需要根据实际的使用情况进行修改,根据实际场景的不同,有不同的修改方式。

2 技术背景

GaussDB的参数实际都是保存在配置文件(一般是“gaussdb.conf”、“gs_hba.conf”)中的,数据库启动时,会读取配置文件使其生效,所以修改参数,其实质就是修改配置文件。

3 处理过程

根据参数类型,GaussDB提供了几种修改方法,具体的参数分类和修改方法如下表格:

参数类型

说明

设置方式

INTERNAL

固定参数,在创建数据库的时候确定,用户无法修改,只能通过show语法或者pg_settings视图进行查看。

POSTMASTER

数据库服务端参数,在数据库启动时确定,可以通过配置文件指定。

guc的set命令

SIGHUP

数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载。

guc的set和reload均可

BACKEND

会话连接参数。在创建会话连接时指定,连接建立后无法修改。连接断掉后参数失效。内部使用参数,不推荐用户设置。

guc的set和reload均可

说明: 设置该参数后,下一次建立会话连接时生效。

SUSET

数据库管理员参数。可在数据库启动时、数据库启动后或者数据库管理员通过SQL进行设置。

guc的set和reload均可,也可以使用数据库管理员执行set参数的sql命令修改设置。

USERSET

普通用户参数。可被任何用户在任何时刻设置。

guc的set和reload均可,也可以通过执行set参数的sql命令修改设置。

说明: 设置USERSET类型的参数时,ALTER DATABASE设置的参数值优先级高于gs_guc设置。如果想要gs_guc设置的参数值生效,则需要执行“alter database xxx reset xxx”进行重置。

说明

通常情况下,能使用reload方法修改的,一定是能通过set方式修改的;能通过gs_guc命令修改的,修改配置文件后重启也是可以生效的。

3.1 GUC命令

GUC命令是最常用的修改方法,修改参数前,一般需要使用数据库初始化用户登录到服务器环境。

GUC命令修改参数格式

gs_guc {set|reload} -Z NOTE-TYPE [-N NODE-NAME] [-I INSTANCE-NAME | -D DATADIR] -c "parameter='value'"

参数说明:

参数的生效情况分两种场景:一种则需要重新启动数据库加载参数生效,修改时使用set,只会修改配置文件;另一种是即时生效的,修改时使用reload,会修改配置文件,并发送信号量给数据库进程,使其重新加载配置文件。

-Z后面是节点类型,可以是CN、DN、cmserver、cmagent,最常见的是coordinator(CN)和datanode(DN)

-Z为cmserver或者cmagent时,只修改配置文件中参数(cmserver.conf/cmagent.conf)

-N后面是节点名称,当参数取值为ALL时,表示设置集群中所有的主机;暂不支持一次设置中指定多个-N参数,指定多个-N会报错

-I后面是实例名称,当参数取值为ALL时,表示设置主机中所有的实例;暂不支持一次设置中指定多个-I参数,指定多个-I会报错

-D后面是集群实例路径

  • 简单示例:

同时修改CN和DN上max_process_memory参数:

gs_guc reload -Z coordinator -Z datanode -N all -I all -c "max_process_memory=450GB"

也可以单独只在CN或者DN上执行。

单独在CN上执行时:

gs_guc reload -Z coordinator -N all -I all -c "max_process_memory=450GB"

单独在DN上执行时:

gs_guc reload -N all -I all -c "max_process_memory=450GB"

3.2 修改配置文件

通常我们都是修改cn和dn的参数,参数的配置文件一般保存在节点对应服务器目录下,当前以及数据库安装目录为/data/cluster为例,展示配置文件存放路径。

分布式:

CN:/data/cluster/data/cn

DN: /data/cluster/data/dn,该目录下有对应节点目录

主备单机版:/data/cluster/data/dn

修改gaussdb.conf中对应的参数,如果参数不存在,可以增加。

注意:修改配置文件不会使参数立即生效,即使是guc命令中reload类型的参数,需要数据库重新启动后才生效。

3.3 管控平台修改

如果数据库是使用管控平台安装(tpops),那数据库会被平台纳管,可以登录平台后,在“参数模板管理”中进行管理,具体可以参考对应管理平台的用户操作指导。

注意:该方法不适合所有参数,有部分参数不支持在平台修改,需要修改配置文件或者使用GUC命令修改

3.4 SQL命令

前面三种方法修改的参数都是全局生效,还可以使用SQL脚本修改参数,根据sql脚本的不同,生效的范围也不相同。

使参数在某个数据库生效

可以使用alter database,如下示例:

alter database dbName set b_format_behavior_compat_options='enable_set_variables';

也可以执行sql,使参数只在当前session生效

set max_datanode_for_plan=1;

4 验证方法

一般情况下,我们用gsql工具登入到数据做参数修改验证:

gsql ((GaussDB Kernel 505.1.0 build da28c417) compiled at 2024-04-18 22:54:55 commit 8474 last mr 17213 release)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
gaussdb=#
gaussdb=# show max_connections;
 max_connections
-----------------
 2000
(1 row)
gaussdb=# select name,setting from pg_settings where name='max_connections';
      name       | setting
-----------------+---------
 max_connections | 2000
(1 row)
gaussdb=#
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。