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

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参数的数量,增加最大连接数实际也可以。

http://www.xdnf.cn/news/10195.html

相关文章:

  • QT6引入QMediaPlaylist类
  • 进程同步:生产者-消费者 题目
  • cf每日刷题
  • RFID技术深度剖析:从原理、协议到S50卡与FM17550读写
  • 多类别分类中的宏平均和加权平均
  • SOC-ESP32S3部分:22-分区表
  • springMVC-9数据格式化
  • rtpinsertsound:语音注入攻击!全参数详细教程!Kali Linux教程!
  • CppCon 2014 学习:Multiplatform C++
  • 具有离散序列建模的统一多模态大语言模型【AnyGPT】
  • 可灵2.1 vs Veo 3:AI视频生成谁更胜一筹?
  • 【数据结构】——二叉树--链式结构
  • 定制开发开源AI智能名片S2B2C商城小程序:数字营销时代的话语权重构
  • elasticsearch低频字段优化
  • ubuntu/windows系统下如何让.desktop/.exe文件 在开机的时候自动运行
  • java程序从服务器端到Lambda函数的迁移与优化
  • 普中STM32F103ZET6开发攻略(一)
  • SAP学习笔记 - 开发15 - 前端Fiori开发 Boostrap,Controls,MVC(Model,View,Controller),Modules
  • Java 单例模式详解
  • Redis最佳实践——安全与稳定性保障之数据持久化详解
  • 2025-5-31-C++ 学习 字符串(终)
  • Springcloud Alibaba自定义负载均衡详解
  • 某航参数逆向及设备指纹分析
  • 告别硬编码!用工厂模式优雅构建可扩展的 Spring Boot 应用 [特殊字符]
  • STM32CubeMX定时器配置
  • 如何在 Ubuntu22.04 上安装并开始使用 RabbitMQ
  • QuickJS 在生物化学计算中的应用
  • MATLAB实战:实现数字调制解调仿真
  • 建造者模式:优雅构建复杂对象
  • Ubuntu下编译mininim游戏全攻略