PostgreSQL 内存配置 与 MemoryContext 的生命周期

本文介绍了PostgreSQL的内存配置,包括gp_vmem、gp_vmem_protect_limit、gp_statement_mem等参数,强调了并发量与内存的关系。同时,深入探讨了MemoryContext的生命周期,分为query_context、tuple_context和expr_context,详细阐述了它们的创建、使用和释放过程,以及MemoryContext的相关操作如创建、切换和释放。

PostgreSQL 内存配置与MemoryContext的生命周期

PG/GP 内存配置

数据库可用的内存 gp_vmem

整个 GP 数据库可用的内存 gp_vmem:

>>> RAM = 128 * GB
>>> gp_vmem = ((SWAP + RAM) - (7.5*GB + 0.05 * RAM)) / 1.7
>>> print(gp_vmem / GB)
67.11764705882352

>>> RAM = 256 * GB
>>> gp_vmem = ((SWAP + RAM) - (7.5*GB + 0.05 * RAM)) / 1.7
>>> print(gp_vmem / GB)
138.64705882352942

内存上限 gp_vmem_protect_limit

每个 Segment 可用的内存上限 gp_vmem_protect_limit:

max_acting_primary_segments = num_segments + 3
gp_vmem_protect_limit = gp_vmem / max_acting_primary_segments

内存配额 gp_statement_mem

每个 Segment 可用的内存配额 gp_statement_mem:

gp_statement_mem = (gp_vmem_protect_limit * 0.9) / max_expected_concurrent_queries
gp_statement_mem = (8192 MB * .9) / 40 = 184MB

注意:实际上的配置名称为statement_mem,并且其值不能突破max_statement_mem的限制。

并发量 max_parallel_workers_per_gather

并发量与内存息息相关,并发越大启动的进程越多,消耗的内存则越大。

show max_parallel_workers; -- default 60

show max_parallel_workers_per_gather; -- default 2
set max_parallel_workers_per_gather = 5;

官方参考文档:

  • https://gp-doc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值