繁体   English   中英

postgresql 11 中复制槽内存不足错误

[英]out of memory error on replication slot in postgresql 11

问题显示在这里: https : //www.enterprisedb.com/postgres-tutorials/postgres-13-logicaldecodingworkmem-and-how-it-saves-your-server-going-out-memory

PostgreSQL 给我们的解决方案是使用logical_decoding_work_mem 配置参数。

我的问题是我使用 PostgreSQL 11 并且这个版本中没有 logical_decoding_work_mem 解决方案。

如何在 PostgreSQL 11 中限制 walsenders 的内存使用量?

进入你的 postgresql.conf

在 postgresql.conf 中设置的此参数的默认值为:

#shared_buffers = 128MB

您应该将其增加到服务器内存的 20%。

work_mem (integer) work_mem 参数基本上提供了在写入临时磁盘文件之前由内部排序操作和哈希表使用的内存量。 排序操作用于 order by、distinct 和 merge 连接操作。 哈希表用于哈希连接和基于哈希的聚合。

在 postgresql.conf 中设置的此参数的默认值为:

#work_mem = 4MB

设置 work_mem 参数的正确值可以减少磁盘交换,从而加快查询速度。

我们可以使用下面的公式来计算数据库服务器的最佳 work_mem 值:

Total RAM * 0.25 / max_connections

max_connections 参数是 GUC 参数之一,用于指定到数据库服务器的最大并发连接数。 默认情况下,它设置为 100 个连接。

我们也可以直接将 work_mem 分配给一个角色:

postgres=# alter user test set work_mem='4GB';

ALTER ROLE

维护工作内存(整数)

maintenance_work_mem 参数基本上提供了维护操作(如真空、创建索引和更改表添加外键操作)使用的最大内存量。

postgresql.conf设置的此参数的默认值为:

#maintenance_work_mem = 64MB

建议将此值设置为高于 work_mem; 这可以提高吸尘性能。 一般来说应该是:

Total RAM * 0.05

Effective_cache_size(整数)

Effective_cache_size 参数估计有多少内存可用于操作系统和数据库本身的磁盘缓存。 PostgreSQL 查询计划器决定它是否固定在 RAM 中。 索引扫描最有可能用于更高的值; 否则,如果该值较低,将使用顺序扫描。 建议将 Effective_cache_size 设置为机器总 RAM 的 50%。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM