文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

重设参数

背景信息

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

  • 参数名称不区分大小写。
  • 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。
    • 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。
    • 枚举类型的取值是在系统表pg_settings的enumvals字段取值定义的。
  • 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。
    • 参数的默认单位在系统表pg_settings的unit字段定义的。
    • 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。
    • 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。

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

GUC参数设置

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

表 1 GUC参数分类

参数类型 说明 设置方式
INTERNAL 固定参数,在创建数据库的时候确定,用户无法修改,只能通过show语法或者pg_settings视图进行查看。
POSTMASTER 数据库服务端参数,在数据库启动时确定,可以通过配置文件指定。 支持表2中的方式二。
SIGHUP 数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载。 支持表2中的方式二。
BACKEND 会话连接参数。在创建会话连接时指定,连接建立后无法修改。连接断掉后参数失效。内部使用参数,不推荐用户设置。 支持表2中的方式二。说明:设置该参数后,下一次建立会话连接时生效。
SUSET 数据库管理员参数。可在数据库启动时、数据库启动后或者数据库管理员通过SQL进行设置。 支持表2中由数据库管理员通过方式一设置。
USERSET 普通用户参数。可被任何用户在任何时刻设置。 支持表2中的方式一设置。

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

表 2 GUC参数设置方式

序号 设置方法
方式一 修改指定数据库、用户、会话级别的参数。
- 设置数据库级别的参数
MogDB=# ALTER DATABASE dbname SET paraname TO value;
在下次会话中生效。
- 设置用户级别的参数
MogDB=# ALTER USER username SET paraname TO value;
在下次会话中生效。
- 设置会话级别的参数
MogDB=# SET paraname TO value;
修改本次会话中的取值。退出会话后,设置将失效。
说明:
SET设置的会话级参数优先级最高,其次是ALTER设置的,其中ALTER DATABASE设置的参数值优先级高于ALTER USER设置,这三种设置方式设置的优先级都高于gs_guc设置方式。
方式二 使用ALTER SYSTEM SET修改数据库参数。
- 设置POSTMASERT级别的参数
MogDB=# ALTER SYSTEM SET paraname TO value;
重启后生效。
- 设置SIGHUP级别的参数
MogDB=# ALTER SYSTEM SET paraname TO value;
立刻生效(实际等待线程重新加载参数略有延迟)。
- 设置BACKEND级别的参数
MogDB=# ALTER SYSTEM SET paraname TO value;
在下次会话中生效。

操作步骤

使用方式一设置参数,以设置explain_perf_mode参数为例。

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

  2. 使用如下命令连接数据库。

    gsql -d postgres -p 8000

    postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

    连接成功后,系统显示类似如下信息:

    gsql((MogDB x.x.x build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)
    Non-SSL connection (SSL connection is recommended when requiring high-security)
    Type "help" for help.
    
    MogDB=# 
  3. 查看explain_perf_mode参数。

    MogDB=# SHOW explain_perf_mode;
     explain_perf_mode 
    -------------------
     normal
    (1 row)
  4. 设置explain_perf_mode参数。

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

    • 设置数据库级别的参数

      MogDB=# ALTER DATABASE postgres SET explain_perf_mode TO pretty;

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

      ALTER DATABASE

      在下次会话中生效。

    • 设置用户级别的参数

      MogDB=# ALTER USER omm SET explain_perf_mode TO pretty;

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

      ALTER ROLE

      在下次会话中生效。

    • 设置会话级别的参数

      MogDB=# SET explain_perf_mode TO pretty;

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

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

    MogDB=# SHOW explain_perf_mode;
     explain_perf_mode
    --------------
     pretty
    (1 row)

示例

–创建表test1。 
MogDB=# CREATE TABLE test1 ( a1 smallint not null, a2 int not null, a3 bigint not null, a4 float not null, a5 double not null, a6 numeric not null, a7 varchar(5) not null );

–向表中插入记录失败。 
MogDB=# insert into test1(a1,a2) values(123412342342314,3453453453434324); 

–查询表失败 
MogDB=# select a1,a2 from test1 group by a1;

–向表中插入记录成功。 
MogDB=# set dolphin.sql_mode = ''; 
MogDB=# insert into test1(a1,a2) values(123412342342314,3453453453434324); 

–查询表成功 
MogDB=# select a1,a2 from test1 group by a1;

–删除表 
MogDB=# DROP TABLE test1;
Copyright © 2011-2024 www.enmotech.com All rights reserved.