Kannan Ramamoorthy Asked: 2016-03-06 15:06:22 +0800 CST2016-03-06 15:06:22 +0800 CST 2016-03-06 15:06:22 +0800 CST postgres 查询是否有最大长度限制? 772 我们正在构建的应用程序可能会执行相当大的插入查询。我的 postgres 查询是否有限制,只能包含一定数量的字符? postgresql 1 个回答 Voted Best Answer Daniel Vérité 2016-03-07T08:27:46+08:002016-03-07T08:27:46+08:00 对于当前的 PostgreSQL 版本(最高 9.5),查询由后端在Stringinfo缓冲区中接收,缓冲区限制为MaxAllocSize,定义为: #define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ (见http://doxygen.postgresql.org/memutils_8h.html) 因此,查询的大小限制为1 GB (2^30),对于终止空字节,减去 1 个字节。 如果客户端尝试发送更大的查询,则会返回如下错误: 错误:内存不足 详细信息:无法将包含 0 个字节的字符串缓冲区再扩大N个字节。 N查询的大小在哪里。 请注意,除了该缓冲区之外,下面的查询1GB可能需要大量内存来解析、计划或执行。1GB 如果您需要将大量文字推送到查询中,请考虑创建临时表的替代方法,将COPY行放入其中并让主查询引用该临时表。
对于当前的 PostgreSQL 版本(最高 9.5),查询由后端在
Stringinfo
缓冲区中接收,缓冲区限制为MaxAllocSize
,定义为:(见http://doxygen.postgresql.org/memutils_8h.html)
因此,查询的大小限制为1 GB (2^30),对于终止空字节,减去 1 个字节。
如果客户端尝试发送更大的查询,则会返回如下错误:
N
查询的大小在哪里。请注意,除了该缓冲区之外,下面的查询
1GB
可能需要大量内存来解析、计划或执行。1GB
如果您需要将大量文字推送到查询中,请考虑创建临时表的替代方法,将
COPY
行放入其中并让主查询引用该临时表。