VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

重设参数

背景信息

Vastbase提供了多种修改GUC参数的方法,用户可以方便的针对数据库、用户、会话进行设置。

  • 参数名称不区分大小写。
  • 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。

    • 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。
    • 枚举类型的取值是在系统表pg_settings的enumvals字段取值定义的。
  • 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。

    • 参数的默认单位在系统表pg_settings的unit字段定义的。
    • 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。
    • 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。

具体参数说明请参见GUC参数说明

GUC参数设置

Vastbase提供了六类GUC参数,具体分类和设置方式请参考表1

表 1 GUC参数分类

参数类型

说明

设置方式

INTERNAL

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

POSTMASTER

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

支持表2中的方式一、方式四。

SIGHUP

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

支持表2中的方式一、方式二、方式四。

BACKEND

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

支持表2中的方式一、方式二、方式四。

说明:

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

SUSET

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

支持表2中的方式一、方式二或由数据库管理员通过方式三设置。

USERSET

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

支持表2中的方式一、方式二或方式三设置。

Vastbase提供了四种方式来修改GUC参数,具体操作请参考表2

表 2 GUC参数设置方式

序号

设置方法

方式一

  1. 使用如下命令修改参数。
    vb_guc set -D datadir -c "paraname=value"
    说明:

    如果参数是一个字符串变量,则使用-c parameter="'value'"或者使用-c "parameter = 'value'"。

    使用以下命令在数据库节点上设置cm_agent某个参数。

    vb_guc set -Z cmagent -c "paraname=value"
    

    使用以下命令在数据库节点上设置cm_server某个参数。

    vb_guc set -Z cmserver -c "paraname=value"
    
  2. 重启数据库使参数生效。
    说明:

    重启Vastbase操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。

    vb_ctl restart 

方式二

vb_guc reload -D datadir -c "paraname=value"
说明:

使用以下命令在数据库节点上同时设置某个参数。

 -c ""

方式三

修改指定数据库、用户、会话级别的参数。

  • 设置数据库级别的参数
     ALTER DATABASE dbname SET paraname TO value;

    在下次会话中生效。

  • 设置用户级别的参数
     ALTER USER username SET paraname TO value;

    在下次会话中生效。

  • 设置会话级别的参数
     SET paraname TO value;

    修改本次会话中的取值。退出会话后,设置将失效。

    说明:

    SET设置的会话级参数优先级最高,其次是ALTER设置的,其中ALTER DATABASE设置的参数值优先级高于ALTER USER设置,这三种设置方式设置的优先级都高于vb_guc设置方式。

方式四

使用ALTER SYSTEM SET修改数据库参数。

  • 设置POSTMASERT级别的参数
     ALTER SYSTEM SET paraname TO value;

    重启后生效。

  • 设置SIGHUP级别的参数
     ALTER SYSTEM SET paraname TO value;

    立刻生效(实际等待线程重新加载参数略有延迟)。

  • 设置BACKEND级别的参数
     ALTER SYSTEM SET paraname TO value;

    在下次会话中生效。

使用方式一和方式二设置参数时,若所设参数不属于当前环境,数据库会提示参数不在支持范围内的相关信息。

示例

示例1: 使用方式一设置数据库参数,以在数据库主节点设置archive_mode参数为例。

1、以操作系统用户vastbase登录数据库主节点。

2、查看archive_mode参数,on表示日志要进行归档操作。

cat /home/vastbase/data/vastbase/postgresql.conf | grep archive_mode

返回结果为如下:

archive_mode = on

3、设置archive_mode参数为off,关闭日志的归档操作。

vb_guc set -D $PGDATA -c "archive_mode=off"

4、重启数据库使参数生效。

vb_ctl restart

5、使用如下命令连接数据库,vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

vsql -d vastbase -p 5432

6、检查参数设置的正确性。

SHOW archive_mode;

返回结果为如下:

 archive_mode
--------------
 off
(1 row)

示例2:使用方式二设置参数,以在数据库主节点设置authentication_timeout参数为例。

1、以操作系统用户vastbase登录数据库主节点。

2、查看authentication_timeout参数。

cat /home/vastbase/data/vastbase/postgresql.conf | grep authentication_timeout

返回结果为如下:

authentication_timeout = 1min

3、设置authentication_timeout参数为59s。

vb_guc reload -D $PGDATA -c "authentication_timeout = 59s"

返回结果为如下:

Total instances: 2. Failed instances: 0.
Success to perform gs_guc!

4、使用如下命令连接数据库,vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

vsql -d vastbase -p 5432

5、检查参数设置的正确性。

SHOW authentication_timeout;

返回结果为如下:

 authentication_timeout 
------------------------
 59s
(1 row)

示例3: 使用方式三设置参数,以设置explain_perf_mode参数为例。

1、以操作系统用户vastbasq登录数据库主节点。

2、使用如下命令连接数据库,vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

vsql -d vastbase -p 5432

3、查看explain_perf_mode参数。

SHOW explain_perf_mode;

结果显示为如下:

 explain_perf_mode 
-------------------
 normal
(1 row)

4、设置explain_perf_mode参数。

使用以下任意方式进行设置:

  • 设置数据库级别的参数

    ALTER DATABASE postgres SET explain_perf_mode TO pretty;
    

    当结果显示为如下信息,则表示设置成功。

    ALTER DATABASE
    

    在下次会话中生效。

  • 设置用户级别的参数

    ALTER USER vastbase SET explain_perf_mode TO pretty;
    

    当结果显示为如下信息,则表示设置成功。

    ALTER ROLE
    

    在下次会话中生效。

  • 设置会话级别的参数

    SET explain_perf_mode TO pretty;
    

    当结果显示为如下信息,则表示设置成功。

    SET
    

5、检查参数设置的正确性。

SHOW explain_perf_mode;

返回结果为如下:

 explain_perf_mode
--------------
 pretty
(1 row)

示例4: 使用方式四设置参数,以设置autovacuum参数为例。

1、以操作系统用户vastbase登录数据库主节点。

2、使用如下命令连接数据库,vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

vsql -d vastbase -p 5432

3、查看autovacuum当前值。

show autovacuum;

返回结果为如下:

 autovacuum 
------------
 off
(1 row)

4、设置参数autovacuum为on。

 ALTER SYSTEM SET autovacuum to on;

5、检查参数设置的正确性。

show autovacuum;

返回结果为如下:

 autovacuum 
------------
 on
(1 row)