设置参数

背景信息

VexDB 提供了许多运行参数,配置这些参数可以影响数据库系统的行为。用户可以通过 GUC(Grand Unified Configuration)参数来控制 VexDB 数据库的部署形态和运行行为。

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

注意事项

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

查看参数当前取值

VexDB 安装后,有一套默认的运行参数,为了使 VexDB 与业务的配合度更高,用户需要根据业务场景和数据量的大小进行 GUC 参数调整。

方法一:使用 SHOW 命令

SHOW 将显示当前运行时参数的数值。

  • 使用如下命令查看单个参数,显示数据库版本信息的参数:
    SHOW configuration_parameter;
    

    configuration_parameter 是运行时参数的名称。
  • 使用如下命令查看所有参数:
    SHOW ALL;
    

示例:使用 SHOW 命令查看服务器的版本号。

SHOW server_version;

返回结果如下:

server_version 
----------------
 9.2.4
(1 row)

方法二:使用 PG_SETTINGS 视图

PG_SETTINGS 视图显示数据库运行时参数的相关信息。

  • 使用如下命令查看单个参数:
    SELECT * FROM pg_settings WHERE NAME='server_version';
    
  • 使用如下命令查看所有参数:
    SELECT * FROM pg_settings;
    

GUC 参数分类

VexDB 提供了六类 GUC 参数,具体分类和设置方式如下:

表1 VeXDB 参数类型

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

GUC 参数设置方式

表2 参数设置方式

说明

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

序号 设置方法
方式一 使用如下命令修改参数,重启数据库后生效。
gs_guc set -D datadir -c "paraname=value"
说明:如果参数是一个字符串变量,则使用-c parameter="'value'"或者使用-c "parameter = 'value'"
使用以下命令在数据库节点上同时设置某个参数。
gs_guc set -N all -I all -c "paraname=value"
使用以下命令在数据库节点上设置cm_agent某个参数。
gs_guc set -Z cmagent -c "paraname=value"
或者
gs_guc set -Z cmagent -N all -I all -c "paraname=value"
使用以下命令在数据库节点上设置cm_server某个参数。
gs_guc set -Z cmserver -c "paraname=value"
或者
gs_guc set -Z cmserver -N all -I all -c "paraname=value"
方式二
gs_guc reload -D datadir -c "paraname=value"
说明:使用以下命令在数据库节点上同时设置某个参数。
gs_guc reload -N all -I all -c "paraname=value"
方式三 修改指定数据库、用户、会话级别的参数。设置数据库级别的参数,在下次会话中生效:
ALTER DATABASE dbname SET paraname TO value;
设置用户级别的参数,在下次会话中生效:
ALTER USER username SET paraname TO value;
设置会话级别的参数,退出会话后,设置将失效:
SET paraname TO value;
说明:SET 设置的会话级参数优先级最高,其次是 ALTER 设置的,其中 ALTER USER 设置的参数值优先级高于 ALTER DATABASE 设置,这三种设置方式设置的优先级都高于 gs_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;

需要帮助?

扫码添加企业微信
获得专业技术支持

企业微信二维码
🎯 快速响应💡 专业解答