FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
您的足迹: Greenplum参数说明
Greenplum参数说明

一、非公开参数

GP中有些参数不是公开的,代码中使用 GUC_NO_SHOW_ALL 参数进行控制。此类参数有以下特征:

  • 官方手册中查不到。
  • “SHOW ALL”命令中不显示该参数。
  • 参数键入过程中tab键词语联想时,不会自动补全。
  • 可以被“SHOW”、“SET”和“RESET”。

例如,planner_work_mem就是一个非公开参数,代码中定义如下:

snippet.cpp
	{
		{"planner_work_mem", PGC_USERSET, RESOURCES_MEM,
			gettext_noop("Sets the maximum memory to be used for query workspaces, "
						 "used in the planner only."),
			gettext_noop("The planner considers this much memory may be used by each internal "
						 "sort operation and hash table before switching to "
						 "temporary disk files."),
			GUC_UNIT_KB | GUC_NOT_IN_SAMPLE | GUC_NO_SHOW_ALL
		},
		&planner_work_mem,
		32768, 2 * BLCKSZ / 1024, MAX_KILOBYTES,
		NULL, NULL, NULL
	},

二、资源管理类

gp_resource_manager

指示GP当前资源管理方式。缺省为资源队列(resource queue)管理方式。详见Managing Resources

值范围 缺省 分级设置
———— —– ———————-
group, queue queue local, system, restart

gp_vmem_protect_segworker_cache_limit

如果一个查询处理进程消耗了超出配置的内存量,那么进程处理完成后不会被cache,以用于后续查询。有很多个连接或者空闲进程的系统可能需要削减此值以释放更多的segment内存。注意,此参数是本地参数,需要为每个segment设置。

值范围 缺省 分级设置
——- —– ———————–
Boolean false master, session, reload

gp_vmem_idle_resource_timeout

如果数据库会话长时间空闲,会话的资源(如共享内存)会被释放,但是仍然保持连接。这样可以允许更多的并发连接。

值范围 缺省 分级设置
——————– —- ———————-
然后有效的时间表达式 18s master, system, reload

gp_workfile_limit_files_per_query

设置每条查询在每个segment上可以溢出的临时文件个数。0表示不限制,有操作系统控制。

值范围 缺省 分级设置
—— —— ———————–
整型数 100000 master, session, reload

gp_workfile_limit_per_query

每条查询在每个segment上可以溢出的文件大小最大值,0表示不限制。

值范围 缺省 分级设置
—— —- ———————–
KB 0 master, session, reload

gp_workfile_limit_per_segment

每个segment允许所有查询溢出磁盘总大小,0表示不限制。

值范围 缺省 分级设置
—— —- ———————-
KB 0 local, system, restart

三、资源组管理类

注:本章参数仅资源组资源管理方式有效。

gp_resgroup_memory_policy

用于资源组管理算子内存分配策略。

  • auto:GP将资源组限制的内存在查询算子之间分配,非内存敏感算子分配固定大小内存,剩下的分配给内存敏感算子。
  • eager_free:GP分配内存更优化,已经执行完释放出来的内存将被重新分配给后续算子使用。
值范围 缺省 分级设置
—————– ———– —————————————-
auto, eager_free eager_free local, system, superuser, restart/reload

gp_resource_group_bypass

允许/禁用GP资源组并发事务限制,缺省值是false,表示允许资源组事务限制。可以将该参数值设为true,以立即旁路一个查询不受资源组资源限制。例如,可以设置该参数值为true,以便将某个关于系统表的查询旁路不受资源组限制。

当设置该参数值为true并运行一个查询时,该查询运行环境如下:

  • 查询运行在资源组内。该查询的资源组分派不变。
  • 每个查询的内存配额约10MB。内存从资源组共享内存或者全局共享内存分配。如果请求的内存超出了共享内存,查询失败。

该参数设置可以是session级的。参数可以在一个事务或者一个函数中设置。

值范围 缺省 分级设置
——- —– ——–
Boolean false session

gp_resource_group_cpu_limit

指示资源组每个GP segment节点可以使用的CPU资源最大百分比。

值范围 缺省 分级设置
——— —- ———————-
0.1 - 1.0 0.9 local, system, restart

gp_resource_group_memory_limit

指示资源组每个GP segment节点可以使用的内存资源最大百分比。

值范围 缺省 分级设置
——— —- ———————-
0.1 - 1.0 0.7 local, system, restart

当使用资源组时,内存将均分给segment主机上的活动的主segment。GP给起主作用的主segment分配内存。即使是故障转移(failover),分配的初始内存不会改变。这就意味着,segment主机上实际使用内存可以会超出gp_resource_group_memory_limit设定的限制。

例如,假设GP集群使用缺省gp_resource_group_memory_limit配置0.7,有个名为seghost1的segment主机上有4ge主segment和4个镜像segment。GP会为seghost1上每个segment指派系统内存的(0.7 / 4 = 0.174%)。如果发生故障转移,seghost1有2个镜像segment故障转移成为主segment,4个原始的主segment仍然保留0.174%系统内存,2个新的主segment每个分配(0.7 / 6 = 0.116%)系统内存。seghost1所有内存分配: $$ 0.7 + (0.116 * 2) = 0.932\% $$

memory_spill_ratio

设置内存敏感算子内存使用比例上限。当事务使用内存超限时,将溢出到磁盘。缺省值是资源组指派给当前活动角色的memory_spill_ratio值。可以为每个session单独设置。

参数值可以是0到100。如果设置为0,GP将使用statement_mem参数值。

值范围 缺省 分级设置
——- —- ———————–
0 - 100 20 master, session, reload

gp_resgroup_memory_policy_auto_fixed_mem

非公开参数(手册查不到)。

当使用eager_free内存分配策略时,该参数指定非内存敏感算子内存大小,默认100KB。

四、资源队列管理类

注:本章参数仅资源队列资源管理方式有效。

gp_vmem_protect_limit

设置单个活动的segment实例的所有进程可以使用的内存总量(单位:MB)。如果某个查询引发超限,将不会被分配内存,查询失败。注意,这是一个本地参数,每个segment必须单独设置(主和镜像segment)。设置此值时,只能使用数字。例如,4096表示设置4096MB。请勿添加MB单位。

为了避免内存超限,以下方法可以评估一个安全的gp_vmem_protect_limit值。

首先计算gp_vmem。这是一个GP主机可以使用的内存:

$$ gp\_vmem = \frac {(SWAP + RAM) - (7.5GB + 0.05 * RAM)} {1.7} $$ 这里,SWAP是主机swap大小,RAM是物理内存大小,单位为GB。

接下来,计算max_acting_primary_segments,这是发生故障时,主机上运行的最大主segment个数。例如,如果将镜像规划在每个主机8个主segment的4台主机中,那么当单个segment主机故障时,将在其余主机上激活2或3个镜像segment。则max_acting_primary_segments为11(8个segment加上3个镜像segment)。

这样就可以推算出gp_vmem_protect_limit(转换成MB): $$ gp\_vmem\_protect\_limit = \frac {gp\_vmem} {max\_acting\_primary\_segments} $$ 对于有大量workfile生成的情形,gp_vmem可以根据workfiles数计算: $$ gp\_vmem = \frac {(SWAP + RAM) - (7.5GB + 0.05 * RAM - (300KB * total\_\#\_workfiles))} {1.7} $$ 基于gp_vmem值可以计算出操作系统内核参数vm.overcommit_ratio。 $$ vm.overcommit\_ratio = \frac {RAM - (0.026 * gp\_vmem)} {RAM} $$ 注:Red Hat Enterprise Linux的vm.overcommit_ratio参数缺省值为50。

值范围 缺省 分级设置
—— —- ———————-
整形数 8192 local, system, restart

gp_resqueue_memory_policy

  • eager_free:发挥了GP4.2之后的计划优势,GP4.2之后不是所有算子同时执行的,计划被分割成多步,先执行完的算子释放内存后,内存被重新分配给后续步骤算子。
  • none:内存管理同GP4.1及之前版本。
  • auto:查询内存受statement_mem和资源队列内存限制。
值范围 缺省 分级设置
———————– ———– —————————–
none, auto, eager_free eager_free local, system, restart/reload

gp_resqueue_priority

允许/禁止查询优先级。当参数设置为禁止时,查询不会使用已有的优先级设置。

值范围 缺省 分级设置
——- —- ———————-
Boolean on local, system, restart

gp_resqueue_priority_cpucores_per_segment

指定分配给每个segment实例CPU单元数。例如,在一台有10个CPU核的GP集群主机上配置了4个segment,那么设置该值为2.5。对于master实例,该值应该为10。对于一个典型的仅有一个master运行的主机,此值可以为所有可以CPU核数。

不当的配置,可能会造成CPU利用率不足或者查询优先级不能达到设计的预期。

值范围 缺省 分级设置
———– —- ———————-
0.1 - 512.0 4 local, system, restart

gp_resqueue_priority_sweeper_interval

指定清理进程评估CPU使用率的时间间隔。当激活一个新的语句时,其优先级和CPUshare每隔设定周期被重新评估。

值范围 缺省 分级设置
————- —- ———————-
500 - 15000ms 1000 local, system, restart

gp_resqueue_memory_policy_auto_fixed_mem

非公开参数(手册查不到)。

当使用eager_free内存分配策略时,该参数指定非内存敏感算子内存大小,默认100KB。

五、性能

gp_workfile_compression

指示是否压缩聚集和hash join算子溢出的临时文件。

如果GPDB安装在ATA(SATA)磁盘驱动器上,启用该标志可能会有助于减轻磁盘IO负载压力。

值范围 缺省 分级设置
——- —- ———————–
Boolean off master, session, reload

六、参考



打赏作者以资鼓励: