暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

磐维数据库配置guc参数

Z·A·Q 2025-02-07
353

概述

  • 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参数设置方式
  • 使用方式一和方式二设置参数时,若所设参数不属于当前环境,数据库会提示参数不在支持范围内的相关信息
    image.png
    image.png

GUC 参数修改示例

  • gs_gucpw_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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论