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配置参数类别。
- 连接和验证参数
- 系统资源消耗参数
- GPORCA参数
- 查询调优参数
- 错误报告和日志参数
- 系统监控参数
- 运行时统计信息收集参数
- 自动统计收集参数
- 客户端连接默认参数
- 锁管理参数
- 资源管理参数(资源队列)
- 资源管理参数(资源组)
- 外部表参数
- 数据库表参数
- 历史版本兼容性参数
- Greenplum数据库阵列配置参数
- master和segment的Greenplum镜像参数
- 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
复制