当前位置: 首页 > news >正文

PostgreSQL ERROR: out of shared memory处理

使用pg_dump命令导出一个库的时候,报

pg_dump: error: query failed: ERROR:  out of shared memory
HINT:  You might need to increase "max_locks_per_transaction".

从错误字面上看是超出内存大小了,建议增加max_locks_per_transaction参数

本环境中:

[postgres174@geoscene ~]$ psql
psql (17.4)
Type "help" for help.postgres=# show max_locks_per_transaction ;max_locks_per_transaction
---------------------------64
(1 row)

原因:

pg_dump -d dbname的时候会对库中所有的表执行lock table in shared mode 操作。

该操作会将表锁记录到表锁所在的共享结构中。

lock.c: SetupLockInTablelock = (LOCK *) hash_search_with_hash_value(LockMethodLockHash,locktag,hashcode,HASH_ENTER_NULL,&found);

LockMethodLockHash 结构在InitLocks初始化

lock.c
InitLocks(void)
{HASHCTL         info;long            init_table_size,max_table_size;bool            found;/** Compute init/max size to request for lock hashtables.  Note these* calculations must agree with LockShmemSize!*///最大表大小max_table_size = NLOCKENTS();init_table_size = max_table_size / 2;/** Allocate hash table for LOCK structs.  This stores per-locked-object* information.*/info.keysize = sizeof(LOCKTAG);info.entrysize = sizeof(LOCK);info.num_partitions = NUM_LOCK_PARTITIONS;LockMethodLockHash = ShmemInitHash("LOCK hash",init_table_size,max_table_size,&info,HASH_ELEM | HASH_BLOBS | HASH_PARTITION);
...

查看

#define NLOCKENTS() \mul_size(max_locks_per_xact, add_size(MaxBackends, max_prepared_xacts))Size
mul_size(Size s1, Size s2)
{Size		result;if (s1 == 0 || s2 == 0)return 0;result = s1 * s2;/* We are assuming Size is an unsigned type here... */if (result / s2 != s1)ereport(ERROR,(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),errmsg("requested shared memory size overflows size_t")));return result;
}

可以看出来,跟最大连接数和max_prepared_xacts相关

所以解决这个问题除了增加max_locks_per_xact参数的数量,增加最大连接数实际也可以。

相关文章:

  • Asp.Net Core SignalR的分布式部署
  • 小明的Java面试奇遇之:支付平台高并发交易系统设计与优化[特殊字符]
  • stm32——I2C协议
  • 颠覆传统!单样本熵最小化如何重塑大语言模型训练范式?
  • PS裁剪后像素未删除?5步解决“删除裁剪像素”失效问题
  • Photoshop智能图层 vs 普通图层:核心差异与适用场景对比
  • Cesium快速入门到精通系列教程
  • Kafka 如何保证顺序消费
  • 第4节 Node.js NPM 使用介绍
  • SpringBoot网络请求RestTemplate Util工具类
  • 定制开发开源AI智能名片S2B2C商城小程序:数字营销时代的话语权重构
  • Ubuntu下编译mininim游戏全攻略
  • [ElasticSearch] ElasticSearch的初识与基本操作
  • MYSQL:主从复制原理及简单实现
  • python打卡day41@浙大疏锦行
  • 【MySQL】索引(B+树详解)
  • python:PyMOL 使用教程 及实用示例
  • 【愚公系列】《生产线数字化设计与仿真》006-颜色分类站仿真(配置颜色分类站的气缸和传送带)
  • 1-Wire 一线式总线:从原理到实战,玩转 DS18B20 温度采集
  • Python字符串格式化(三): t-string前瞻(Python 3.14 新特性)
  • 用maxcms做的网站/百度在线
  • 嵌入式软件开发培训机构/北京网站优化推广方案
  • 永久网站建设/手游cpa推广平台
  • 深圳专业做网站建网站价格/店铺推广软文500字
  • 如何修改网站模板内容/怎么做自媒体
  • 石家庄网站排名推广/seoul