服务器配置参数

有很多Greenplum服务器配置参数能够影响 Greenplum数据库系统的行为。 如同常规的PostgreSQL数据库系统一样,许多配置参数有相同的名称、设置以及行为。

参数类型和值

所有的参数不区分大小写。 每个参数取值为四种类型之一:布尔, 整数, 浮点, 或 字符串。

布尔值可能被写成ON, OFF, TRUE, FALSE, YES, NO, 1, 0(所有都是不区分大小写)。

枚举类型参数的指定方式与字符串参数相同,但仅限于一组有限的值。 枚举参数值不区分大小写。

某些设置指定内存或者时间值。 每个都有一个隐式单位, 它是千字节,块(通常为8千字节),毫秒,秒,或者分钟。 有效内存单位是kB(千字节),MB(兆字节),和GB(千兆字节)。 有效的时间单位是ms(毫秒),s(秒),min(分钟),h(小时),和d(天)。 注意 内存单元的乘数为1024,而不是1000。有效的时间表达式包含数字和单位。 当指定内存和时间单位时使用SET命令,将值括在引号中。 例如:

  1. SET statement_mem TO '200MB';

Note: 值和单位名字之间没有空格。

设置参数

许多配置参数对谁可以更改它们,何处改变它们以及何时改变他们都做了限制,例如,用户必须是Greenplum 数据库的超级用户。 其他参数需要重启系统才能更改生效。 分类为session级别的参数可以在系统层级设置(在postgresql.conf文件中), 在数据库层级设置( 使用ALTER DATABASE), 在角色层级设置(使用ALTER ROLE), 在数据库角色级设置(ALTER ROLE…IN DATABASE…SET), 或者在会话层级设置(使用using SET)。 系统参数只能在postgresql.conf文件中设置。

在Greenplum数据库中,Master实例和Segment实例都有它自己的postgresql.conf文件(位于各自的数据目录中)。 一些参数被认为是local参数,意味着每个Segment实例都查看自己的postgresql.conf文件来获取该参数的值。 用户必须在系统上的每个实例中都设置local参数(Master实例和Segment实例)。 其他参数被认为是master参数。 master参数只能在Master实例上设置。

这个表描述了服务器配置参数描述中“可设置分类”列中的值。

Table 1. Settable Classifications
设置分类描述
master或localmaster参数只能在Greenplum的Master实例的postgresql.conf文件中设置。 然后,该参数的值在运行时被传递到(或者忽略)到Segment实例。

local参数必须在Master实例和每个Segment实例的postgresql.conf文件中设置。 每个Segment实例会在其自己的配置文件中去获得参数。 local参数设置总是需要系统重启才能生效。

session或systemSession参数可以在数据库会话中即时更改,并且可以具有以下设置的层次结构: 在系统层级(postgresql.conf)、 在数据库层级(ALTER DATABASE…SET)、 在角色层级(ALTER ROLE…SET)、 在数据库和角色层级或者会话层级(SET)。 如果参数设置为多个级别,则最细度的设置优先(例如,会话覆盖数据库和角色,数据库和角色覆盖角色,角色覆盖数据库,数据库覆盖系统)。

system参数只能通过postgresql.conf文件修改。

restart或reload当更改postgresql.conf文件中的参数值时,有些需要重启Greenplum数据库才能生效。 其他参数只需要重新加载服务器配置文件就能刷新(使用gpstop -u),不需要停止系统。
superuser这些会话参数只能通过数据库超级用户才能设置,常规用户不能设置这个参数。
read only这些参数不能被数据库用户和超级用户设置,当前的参数值可以显示但是不会更改。