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

GPDB 的系统配置

原创 闫伟 2020-05-14
1825

GPDB 的系统配置

服务器配置文件包含着配置服务器行为的参数。Greenplum数据库的配置文件postgresql.conf 位于数据库实例的数据目录之下。

Master和每一个Segment实例都有自己的postgresql.conf文件。 一些参数是本地的:每个Segment实例检查它的postgresql.conf文件来得到这类 参数的值。在Master和每一个Segment实例上都要设置本地参数。

其他参数是用户要在Master实例上设置的master参数。其值会在查询运行时被向下传递到Segment实例 (或者在某些情况中会被忽略)。

Master Parameters - 仅仅在master instance上设置,查询时候这些值被传递至segment或被忽略。
Local Parameters - 每个segment从自己的配置文件中读取参数。必须在每个instance设置local参数(master+segments)

配置参数的级别

很多参数的修改是受限的,如某些参数需要GP的超级用户、某些仅仅设置在系统级或需要重启数据库才能生效。
许多配置参数是session参数。该参数能够被设置在system级、database级、role级、session级的四个不同级别。
大部分的session参数能够被在自己的session中修改。
————————————————

删除配置
gpconfig -r

配置和查看本地参数

要在多个Segment中改变一个本地配置参数,在每一个目标Segment的postgresql.conf文件中更新该参数,包括主要的和镜像的Segment。使用gpconfig工具可以在所有的Greenplum postgresql.conf 文件中设置一个参数。例如:

$ gpconfig -c max_connections -v 770 [gpadmin@mdw ~]$ gpconfig -c max_connections -v 770 20200427:23:01:48:030547 gpconfig:mdw:gpadmin-[CRITICAL]:-new GUC value failed validation: the value of max_connections must be greater on the segments than on the master new GUC value failed validation: the value of max_connections must be greater on the segments than on the master 说明max_connections segment要比master大 gpconfig -c max_connection -v 750 -m 150 -c 指定要参数, -v 指定segment 参数的设置值,如果没有-m参数,它也指定master上参数的设置,-m 如果希望master参数不同于segment,那么通过该参数独立指定master的参数值。 还有一个指令可以查询参数:gpconfig -s max_connections gpconfig只能在系统启动的情况下调用,所以如果参数修改不合适,导致系统无法启动时,我们可以用下列方法处理 1、先把master的参数修改成正常的值 2、gpstart -m 仅启动master进入管理模式 3、gpconfig -r <参数> -- 把参数重置成默认值 4、gpstop -a -r -M fast gpconfig -s gp_vmem_protect_limit gpconfig -c gp_vmem_protect_limit -v 16384
复制

修改测试测试

[gpadmin@mdw ~]$ gpconfig -s gp_vmem_protect_limit Values on all segments are consistent GUC : gp_vmem_protect_limit Master value: 8192 Segment value: 8192 修改到16384,显示修改成功 [gpadmin@mdw ~]$ gpconfig -c gp_vmem_protect_limit -v 16384 20200427:23:06:16:030687 gpconfig:mdw:gpadmin-[INFO]:-completed successfully with parameters '-c gp_vmem_protect_limit -v 16384' 但是现在还没有生效 [gpadmin@mdw ~]$ gpconfig -s gp_vmem_protect_limit Values on all segments are consistent GUC : gp_vmem_protect_limit Master value: 8192 Segment value: 8192 重启GP,但是显示有连接,需要使用gpstop -fast来进行关闭,然后启动 [gpadmin@mdw ~]$ gpstop -r 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:-Starting gpstop with args: -r 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:-Gathering information and validating the environment... 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:-Obtaining Segment details from master... 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 5.10.2 build commit:b3c02f3acd880e2d676dacea36be015e4a3826d4' 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:--------------------------------------------- 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:-Master instance parameters 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:--------------------------------------------- 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- Master Greenplum instance process active PID = 24248 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- Database = template1 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- Master port = 5432 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- Master directory = /greenplum/gpdata/master/gpseg-1 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- Shutdown mode = smart 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- Timeout = 120 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- Shutdown Master standby host = On 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:--------------------------------------------- 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:-Segment instances that will be shutdown: 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:--------------------------------------------- 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- Host Datadir Port Status 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/primary1/gpseg0 40000 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/mirror1/gpseg0 50000 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/primary2/gpseg1 40001 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/mirror2/gpseg1 50001 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/primary1/gpseg2 40000 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/mirror1/gpseg2 50000 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/primary2/gpseg3 40001 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/mirror2/gpseg3 50001 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/primary1/gpseg4 40000 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/mirror1/gpseg4 50000 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/primary2/gpseg5 40001 u 20200427:23:06:33:030782 gpstop:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/mirror2/gpseg5 50001 u Continue with Greenplum instance shutdown Yy|Nn (default=N): > y 20200427:23:06:35:030782 gpstop:mdw:gpadmin-[INFO]:-There are 1 connections to the database 20200427:23:06:35:030782 gpstop:mdw:gpadmin-[WARNING]:-There are other connections to this instance, shutdown mode smart aborted 20200427:23:06:35:030782 gpstop:mdw:gpadmin-[WARNING]:-Either remove connections, or use 'gpstop -M fast' or 'gpstop -M immediate' 20200427:23:06:35:030782 gpstop:mdw:gpadmin-[WARNING]:-See gpstop -? for all options 20200427:23:06:35:030782 gpstop:mdw:gpadmin-[ERROR]:-gpstop error: Active connections. Aborting shutdown... [gpadmin@mdw ~]$ gpstop -M fast 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:-Starting gpstop with args: -M fast 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:-Gathering information and validating the environment... 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:-Obtaining Segment details from master... 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:-Greenplum Version: 'postgres (Greenplum Database) 5.10.2 build commit:b3c02f3acd880e2d676dacea36be015e4a3826d4' 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:--------------------------------------------- 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:-Master instance parameters 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:--------------------------------------------- 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- Master Greenplum instance process active PID = 24248 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- Database = template1 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- Master port = 5432 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- Master directory = /greenplum/gpdata/master/gpseg-1 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- Shutdown mode = fast 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- Timeout = 120 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- Shutdown Master standby host = On 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:--------------------------------------------- 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:-Segment instances that will be shutdown: 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:--------------------------------------------- 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- Host Datadir Port Status 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/primary1/gpseg0 40000 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/mirror1/gpseg0 50000 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/primary2/gpseg1 40001 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/mirror2/gpseg1 50001 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/primary1/gpseg2 40000 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/mirror1/gpseg2 50000 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/primary2/gpseg3 40001 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/mirror2/gpseg3 50001 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/primary1/gpseg4 40000 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/mirror1/gpseg4 50000 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/primary2/gpseg5 40001 u 20200427:23:07:06:030819 gpstop:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/mirror2/gpseg5 50001 u Continue with Greenplum instance shutdown Yy|Nn (default=N): > y 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-There are 1 connections to the database 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-Commencing Master instance shutdown with mode='fast' 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-Master host=mdw 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-Detected 1 connections to database 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-Switching to WAIT mode 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-Will wait for shutdown to complete, this may take some time if 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-there are a large number of active complex transactions, please wait... 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-Commencing Master instance shutdown with mode=fast 20200427:23:07:08:030819 gpstop:mdw:gpadmin-[INFO]:-Master segment instance directory=/greenplum/gpdata/master/gpseg-1 20200427:23:07:09:030819 gpstop:mdw:gpadmin-[INFO]:-Attempting forceful termination of any leftover master process 20200427:23:07:09:030819 gpstop:mdw:gpadmin-[INFO]:-Terminating processes for segment /greenplum/gpdata/master/gpseg-1 20200427:23:07:09:030819 gpstop:mdw:gpadmin-[INFO]:-Stopping master standby host smdw mode=fast 20200427:23:07:11:030819 gpstop:mdw:gpadmin-[INFO]:-Successfully shutdown standby process on smdw 20200427:23:07:11:030819 gpstop:mdw:gpadmin-[INFO]:-Targeting dbid [2, 8, 3, 9, 4, 10, 5, 11, 6, 12, 7, 13] for shutdown 20200427:23:07:11:030819 gpstop:mdw:gpadmin-[INFO]:-Commencing parallel primary segment instance shutdown, please wait... 20200427:23:07:11:030819 gpstop:mdw:gpadmin-[INFO]:-0.00% of jobs completed 20200427:23:07:12:030819 gpstop:mdw:gpadmin-[INFO]:-100.00% of jobs completed 20200427:23:07:12:030819 gpstop:mdw:gpadmin-[INFO]:-Commencing parallel mirror segment instance shutdown, please wait... 20200427:23:07:12:030819 gpstop:mdw:gpadmin-[INFO]:-0.00% of jobs completed 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:-100.00% of jobs completed 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:----------------------------------------------------- 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:- Segments stopped successfully = 12 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:- Segments with errors during stop = 0 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:----------------------------------------------------- 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:-Successfully shutdown 12 of 12 segment instances 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:-Database successfully shutdown with no errors reported 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover gpmmon process 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:-No leftover gpmmon process found 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover gpsmon processes 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:-No leftover gpsmon processes on some hosts. not attempting forceful termination on these hosts 20200427:23:07:14:030819 gpstop:mdw:gpadmin-[INFO]:-Cleaning up leftover shared memory [gpadmin@mdw ~]$ gpstart 20200427:23:07:27:030970 gpstart:mdw:gpadmin-[INFO]:-Starting gpstart with args: 20200427:23:07:27:030970 gpstart:mdw:gpadmin-[INFO]:-Gathering information and validating the environment... 20200427:23:07:27:030970 gpstart:mdw:gpadmin-[INFO]:-Greenplum Binary Version: 'postgres (Greenplum Database) 5.10.2 build commit:b3c02f3acd880e2d676dacea36be015e4a3826d4' 20200427:23:07:27:030970 gpstart:mdw:gpadmin-[INFO]:-Greenplum Catalog Version: '301705051' 20200427:23:07:27:030970 gpstart:mdw:gpadmin-[INFO]:-Starting Master instance in admin mode 20200427:23:07:28:030970 gpstart:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information 20200427:23:07:28:030970 gpstart:mdw:gpadmin-[INFO]:-Obtaining Segment details from master... 20200427:23:07:28:030970 gpstart:mdw:gpadmin-[INFO]:-Setting new master era 20200427:23:07:28:030970 gpstart:mdw:gpadmin-[INFO]:-Master Started... 20200427:23:07:28:030970 gpstart:mdw:gpadmin-[INFO]:-Shutting down master 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:--------------------------- 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:-Master instance parameters 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:--------------------------- 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:-Database = template1 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:-Master Port = 5432 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:-Master directory = /greenplum/gpdata/master/gpseg-1 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:-Timeout = 600 seconds 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:-Master standby start = On 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:--------------------------------------- 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:-Segment instances that will be started 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:--------------------------------------- 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- Host Datadir Port Role 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/primary1/gpseg0 40000 Primary 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/mirror1/gpseg0 50000 Mirror 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/primary2/gpseg1 40001 Primary 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/mirror2/gpseg1 50001 Mirror 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/primary1/gpseg2 40000 Primary 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/mirror1/gpseg2 50000 Mirror 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw2 /greenplum/gpdata/primary2/gpseg3 40001 Primary 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/mirror2/gpseg3 50001 Mirror 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/primary1/gpseg4 40000 Primary 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/mirror1/gpseg4 50000 Mirror 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw3 /greenplum/gpdata/primary2/gpseg5 40001 Primary 20200427:23:07:29:030970 gpstart:mdw:gpadmin-[INFO]:- sdw1 /greenplum/gpdata/mirror2/gpseg5 50001 Mirror Continue with Greenplum instance startup Yy|Nn (default=N): > y 20200427:23:07:31:030970 gpstart:mdw:gpadmin-[INFO]:-Commencing parallel primary and mirror segment instance startup, please wait... .. 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:-Process results... 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:----------------------------------------------------- 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:- Successful segment starts = 12 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:- Failed segment starts = 0 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:- Skipped segment starts (segments are marked down in configuration) = 0 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:----------------------------------------------------- 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:-Successfully started 12 of 12 segment instances 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:----------------------------------------------------- 20200427:23:07:33:030970 gpstart:mdw:gpadmin-[INFO]:-Starting Master instance mdw directory /greenplum/gpdata/master/gpseg-1 20200427:23:07:34:030970 gpstart:mdw:gpadmin-[INFO]:-Command pg_ctl reports Master mdw instance active 20200427:23:07:34:030970 gpstart:mdw:gpadmin-[INFO]:-Starting standby master 20200427:23:07:34:030970 gpstart:mdw:gpadmin-[INFO]:-Checking if standby master is running on host: smdw in directory: /greenplum/gpdata/master/gpseg-1 20200427:23:07:36:030970 gpstart:mdw:gpadmin-[INFO]:-Database successfully started 重启之后再次查看 [gpadmin@mdw ~]$ gpconfig -s gp_vmem_protect_limit Values on all segments are consistent GUC : gp_vmem_protect_limit Master value: 16384 Segment value: 16384 [gpadmin@mdw ~]$
复制

重启Greenplum数据库让配置改变生效:

$ gpstop -r
复制

SQL命令SHOW允许用户查看当前的服务器配置参数设置。例如,要查看所有参数的设置:

$ psql -c 'SHOW ALL;'
[gpadmin@mdw ~]$ psql -c 'SHOW max_connections;'
 max_connections 
-----------------
 250
(1 row)

[gpadmin@mdw ~]$ 
复制

SHOW只列出Master实例的设置。要查看整个系统(Master和所有的Segment) 中一个特定参数的值,使用gpconfig工具。例如:

$ gpconfig --show max_connections
[gpadmin@mdw ~]$ gpconfig --show max_connections
Values on all segments are consistent
GUC          : max_connections
Master  value: 250
Segment value: 750
[gpadmin@mdw ~]$ 
复制

配置和查看master参数

Master参数只能在GP的master节点中设置。
要设置Master配置参数,请在Greenplum数据库的Master实例上设置它。如果它也是一个session参数, 用户可以为一个特定数据库、角色或者会话设置该桉树。如果一个参数在多个级别上都被设置,最细粒度级别上的 设置会优先。例如,会话覆盖角色,角色覆盖数据库,而数据库覆盖系统。一句话就是以听最小的话。

参数的分类讲解

PostgreSQL 系统所有的系统参数配置项对大小都不敏感,主要有Bool、Int、浮点数、字符串、枚举值

参数的修改,有些需要重启数据库、有些普通用户直接修改、有些需要超级用户才能修改生效,分下面几类:

1、internal:只读参数,已经写死了,不能在修改
2、postmaster:需要重启数据库才能生效
3、sighup:不需要重启数据库,给postmaster进程发送sighup信号即可生效
4、backend:不需要重启数据库,给postmaster进程发送sighup信号即可生效,但是对于已经连接着的客户端,需要断开重连才能生效
5、superuser:不需要重启数据库,超级用户通过set 命令即可设置
6、user:不需要重启数据库,通过set命令既可以设置

通过查询pg_setting表,可以查看对于的参数的描述和类型

archdata=# select name,context,vartype,min_val,max_val from pg_settings where name='max_connections';
      name       |  context   | vartype | min_val | max_val 
-----------------+------------+---------+---------+---------
 max_connections | postmaster | integer | 10      | 65535
(1 row)

archdata=#

说明max_connections是需要重启服务器生效的。
复制

[system级参数]

步骤如下:
1.编辑 $MASTER_DATA_DIRECTORY/postgresql.conf 文件
2.找到你要修改的参数,去掉注释(删掉前面的#),并且设置你想要的值
3.保存并关闭文件
4.对于session参数不需要重启服务,执行如下:
$ gpstop -u
5.对于需要重启服务的参数修改,执行如下:
$ gpstop -r

[database级参数]

当session参数设置在database级别,每个session连接到数据库时都要使用这个参数。
设置的database参数会覆盖system级的参数。
设置database级参数,使用ALTER DATABASE命令
如:
=# ALTER DATABASE mydatabase SET search_path TO myschema;

[role级参数]

当session参数设置在role级别,每个session通过role初始化时将使用此参数。
设置的role参数会覆盖database级的参数。
如:
=# ALTER ROLE bob SET search_path TO bobschema;

[session级参数]

任何session参数都能在活跃的session中设置,使用 SET 命令。
设置的session参数会覆盖role级的参数。
如:
=# SET work_mem TO ‘200MB’;
=# RESET work_mem;

参数分类

配置参数会影响服务器行为的类别,例如资源消耗,查询调整和身份验证。 以下主题描述了Greenplum配置参数类别。

常用的优化参数

work_mem

work_mem(,global,物理内存的2%-4%),segment用作sort,hash操作的内存大小
当PostgreSQL对大表进行排序时,数据库会按照此参数指定大小进行分片排序,将中间结果存放在临时文件中,这些中间结果的临时文件最终会再次合并排序,所以增加此参数可以减少临时文件个数进而提升排序效率。当然如果设置过大,会导致swap的发生,所以设置此参数时仍需谨慎。

[gpadmin@mdw ~]$ gpconfig -s  maintenance_work_mem
Values on all segments are consistent
GUC          : maintenance_work_mem
Master  value: 64MB
Segment value: 64MB
[gpadmin@mdw ~]$ 
复制

max_statement_mem

设置每个查询最大使用的内存量,该参数是防止statement_mem参数设置的内存过大导致的内存溢出.

[gpadmin@mdw ~]$ gpconfig -s max_statement_mem
Values on all segments are consistent
GUC          : max_statement_mem
Master  value: 2000MB
Segment value: 2000MB
[gpadmin@mdw ~]$ 
复制

gp_vmem_protect_limit

控制了每个segment数据库为所有运行的查询分配的内存总量。如果查询需要的内存超过此值,则会失败。

[gpadmin@mdw ~]$ gpconfig -s gp_vmem_protect_limit
Values on all segments are consistent
GUC          : gp_vmem_protect_limit
Master  value: 16384
Segment value: 16384
[gpadmin@mdw ~]$ 
复制

gp_workfile_limit_files_per_query

SQL查询分配的内存不足,Greenplum数据库会创建溢出文件(也叫工作文件)。在默认情况下,一个SQL查询最多可以创建 100000 个溢出文件,这足以满足大多数查询。
该参数决定了一个查询最多可以创建多少个溢出文件。0 意味着没有限制。限制溢出文件数据可以防止失控查询破坏整个系统。

gpconfig -s gp_workfile_limit_files_per_query
Values on all segments are consistent
GUC          : gp_workfile_limit_files_per_query
Master  value: 100000
Segment value: 100000
gp_statement_mem
复制

effective_cache_size

(master节点,可以设为物理内存的85%)
这个参数告诉PostgreSQL的优化器有多少内存可以被用来缓存数据,以及帮助决定是否应该使用索引。这个数值越大,优化器使用索引的可能性也越大。因此这个数值应该设置成shared_buffers加上可用操作系统缓存两者的总量。通常这个数值会超过系统内存总量的50%以上。

查看现有配置值:

gpconfig -s effective_cache_size
Values on all segments are consistent
GUC          : effective_cache_size
Master  value: 512MB
Segment value: 512MB
复制

max_connections

最大连接数,Segment建议设置成Master的5-10倍。

max_connections = 200 #(master、standby)
max_connections = 1200 #(segment)

查看现有配置值:
gpconfig -s max_connections

GUC          : max_connections
Master  value: 250
Segment value: 750
复制

max_prepared_transactions

这个参数只有在启动数据库时,才能被设置。它决定能够同时处于prepared状态的事务的最大数目(参考PREPARE TRANSACTION命令)。如果它的值被设为0。则将数据库将关闭prepared事务的特性。它的值通常应该和max_connections的值一样大。每个事务消耗600字节(b)共享内存。

gpconfig -s max_prepared_transactions
Values on all segments are consistent
GUC          : max_prepared_transactions
Master  value: 250
Segment value: 250
复制

max_files_per_process

设置每个服务器进程允许同时打开的最大文件数目。缺省是1000。 如果内核强制一个合理的每进程限制,那么你不用操心这个设置。 但是在一些平台上(特别是大多数BSD系统), 内核允许独立进程打开比个系统真正可以支持的数目大得多得文件数。 如果你发现有"Too many open files"这样的失败现像,那么就尝试缩小这个设置。 这个值只能在服务器启动的时候设置。

查看现有配置值:
gpconfig -s max_files_per_process
Values on all segments are consistent
GUC          : max_files_per_process
Master  value: 1000
Segment value: 1000
修改配置
gpconfig -c max_files_per_process -v 1000
复制

shared_buffers

只能配置segment节点,用作磁盘读写的内存缓冲区,开始可以设置一个较小的值,比如总内存的15%,然后逐渐增加,过程中监控性能提升和swap的情况。

gpconfig -s shared_buffers
Values on all segments are consistent
GUC          : shared_buffers
Master  value: 64MB
Segment value: 125MB

修改配置
gpconfig -c shared_buffers -v 1024MB

gpconfig -r shared_buffers -v 1024MB
复制

temp_buffers

: 即临时缓冲区,拥有数据库访问临时数据,GP中默认值为1M,在访问比较到大的临时表时,对性能提升有很大帮助。

查看现有配置值:
gpconfig -s temp_buffers
Values on all segments are consistent
GUC          : temp_buffers
Master  value: 1024
Segment value: 1024

修改配置
gpconfig -c temp_buffers -v 4096
复制

gp_fts_probe_threadcount:

设置ftsprobe线程数,此参数建议大于等于每台服务器segments的数目。

查看现有配置值:
gpconfig -s gp_fts_probe_threadcount
Values on all segments are consistent
GUC          : gp_fts_probe_threadcount
Master  value: 16
Segment value: 16



重启数据库,使参数生效
gpstop -u 
重新加载配置文件 postgresql.conf 和 pg_hba.conf
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

TA的专栏
Murkey的Oracle回顾之旅
收录49篇内容
Murkey的Tidb学习之旅
收录6篇内容
目录
  • GPDB 的系统配置
    • 配置参数的级别
    • 配置和查看本地参数
    • 配置和查看master参数
      • 参数的分类讲解
      • [system级参数]
      • [database级参数]
      • [role级参数]
      • [session级参数]
    • 参数分类
    • 常用的优化参数
      • work_mem
      • max_statement_mem
      • gp_vmem_protect_limit
      • gp_workfile_limit_files_per_query
      • effective_cache_size
      • max_connections
      • max_prepared_transactions
      • max_files_per_process
      • shared_buffers
      • temp_buffers
      • gp_fts_probe_threadcount: