概述
- PanWeiDB 提供了多种修改 GUC 参数的方法,用户可以方便的针对数据库、用户、会话进行设置。
- 参数名称不区分大小写。
- 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。
- 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。
- 枚举类型的取值是在系统表 pg_settings 的 enumvals 字段取值定义的。
- 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。
- 参数的默认单位在系统表 pg_settings 的 unit 字段定义的。
- 内存单位有:KB、MB、GB。
- 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和 d(天)。
GUC 参数设置
- PanWeiDB 提供了六类 GUC 参数,具体分类和设置方式请参考下图
表 1 GUC 参数分类
| 参数类型 | 说明 | 设置方式 |
|---|---|---|
| INTERNAL | 固定参数,在创建数据库的时候确定,用户无法修改,只能通过 show 语法或者 pg_settings视图进行查看 | 无 |
| POSTMASTER | 数据库服务端参数,在数据库启动时确定,可以通过配置文件指定 | 支持表 2 中的方式一、方式四 |
| SIGHUP | 数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载 | 支持表 2 中的方式一、方式二、方式四 |
| BACKEND | 会话连接参数。在创建会话连接时指定,连接建立后无法修改。连接断掉后参数失效。内部使用参数,不推荐用户设置 | 支持表 2 中的方式一、方式二、方式四。 说明:设置该参数后,下一次建立会话连接时生效 |
| SUSET | 数据库管理员参数。可在数据库启动时、数据库启动后或者数据库管理员通过 SQL 进行设置 | 支持表 2 中的方式一、方式二或由数据库管理员通过方式三设置 |
| USERSET | 普通用户参数。可被任何用户在任何时刻设置 | 支持表 2 中的方式一、方式二或方式三设置 |
表2 GUC参数设置方式
- 使用方式一和方式二设置参数时,若所设参数不属于当前环境,数据库会提示参数不在支持范围内的相关信息


GUC 参数修改示例
gs_guc是pw_guc的软链接
[omm@pwdb2 ~]$ which pw_guc
/database/panweidb/app/bin/pw_guc
[omm@pwdb2 ~]$ which gs_guc
/database/panweidb/app/bin/gs_guc
[omm@pwdb2 ~]$ ll /database/panweidb/app/bin/gs_guc
lrwxrwxrwx 1 omm dbgrp 6 Sep 29 19:53 /database/panweidb/app/bin/gs_guc -> pw_guc
[omm@pwdb2 ~]$ ll /database/panweidb/app/bin/pw_guc
-rwx------ 1 omm dbgrp 286504 Sep 29 19:57 /database/panweidb/app/bin/pw_guc
POSTMASTER参数类型
- 以设置
track_activity_query_size为例,该参数设置用于跟踪每一个活动会话的当前正在执行命令的字节数。 - 查看参数类型
postgres=# select name,setting,context from pg_settings where name='track_activity_query_size';
name | setting | context
---------------------------+---------+------------
track_activity_query_size | 1024 | postmaster
(1 row)
- 使用方式一修改
[omm@pwdb2 ~]$ gs_guc set -D $PGDATA -c "track_activity_query_size=2048"
The pw_guc run with the following arguments: [gs_guc -D /database/panweidb/data -c track_activity_query_size=2048 set ].
expected instance path: [/database/panweidb/data/postgresql.conf]
gs_guc set: track_activity_query_size=2048: [/database/panweidb/data/postgresql.conf]
Total instances: 1. Failed instances: 0.
Success to perform gs_guc!
- 重启数据库,查看参数
[omm@pwdb2 ~]$ gs_ctl restart -D $PGDATA
[omm@pwdb2 ~]$ gsql -c "show track_activity_query_size"
track_activity_query_size
---------------------------
2048
(1 row)
SIGHUP参数类型
- 以设置
authentication_timeout参数为例吗,该参数指定完成客户端认证的最长时间。如果一个客户端没有在这段时间里完成与服务器端的认证,则服务器自动中断与客户端的连接,这样就避免了出问题的客户端无限制地占用连接数 - 查看参数类型
postgres=# select name,setting,context from pg_settings where name='authentication_timeout';
name | setting | context
------------------------+---------+---------
authentication_timeout | 60 | sighup
(1 row)
- 使用方式二修改
[omm@pwdb2 ~]$ gs_guc reload -D $PGDATA -c "authentication_timeout=50s"
The pw_guc run with the following arguments: [gs_guc -D /database/panweidb/data -c authentication_timeout=50s reload ].
expected instance path: [/database/panweidb/data/postgresql.conf]
gs_guc reload: authentication_timeout=50s: [/database/panweidb/data/postgresql.conf]
server signaled
Total instances: 1. Failed instances: 0.
Success to perform gs_guc!
[omm@pwdb2 ~]$ gsql -c "show authentication_timeout"
authentication_timeout
------------------------
50s
(1 row)
USERSET 参数类型
- 以设置
session_timeout参数为例,该参数表明与服务器建立链接后,不进行任何操作的最长时间 - 查看参数类型
postgres=# select name,setting,context from pg_settings where name='session_timeout';
name | setting | context
-----------------+---------+---------
session_timeout | 0 | user
(1 row)
- 使用方式三设置用户级别参数
postgres=# alter user u2 set session_timeout to '15min';
ALTER ROLE
postgres=# select usename,useconfig from pg_user where usename='u2';
usename | useconfig
---------+-------------------------
u2 | {session_timeout=15min}
(1 row)
最后修改时间:2025-02-07 14:50:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




