【问题标题】:ERROR: array size exceeds the maximum allowed (1073741823)错误:数组大小超过允许的最大值 (1073741823)
【发布时间】:2016-11-12 07:23:51
【问题描述】:

我正在尝试溶解一个多边形表的边界,这些多边形表是半径为 5 公里的 ST_Buffers,并将它们转储到另一个表中。第一个表包含大约 1000 万个多边形。 包含多边形的表是:

CREATE TABLE poly_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326) );

这是我要创建的表:

CREATE TABLE buffer_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326) );

INSERT INTO buffer_5km(gid,bufferType,the_geog) VALUES (1,'test',(SELECT (ST_Dump(ST_Multi(ST_Union(ST_MakeValid(poly_5km.the_geog::geometry))))).geom::geography FROM poly_5km WHERE poly_5km.bufferType= 'test'));

但是每当我运行插入语句时,我都会收到此错误:

ERROR:  array size exceeds the maximum allowed (1073741823)

谁能告诉我我做错了什么?

【问题讨论】:

  • 您的选择占用了太多内存。批处理过程呢??
  • 是系统内存还是列大小限制?我的系统上有 16 GB RAM。我也试过ST_MemUnion。但它太慢了,需要很长时间才能运行。
  • 你加载太多尝试使用 64 位或批量大小的进程。
  • @AlvaroJoao 批处理是什么意思?

标签: performance postgresql postgis


【解决方案1】:

您正在尝试存储超过 1GB 的长值。 PostgreSQL 对象 has 1GB limits - 你不能改变它。此限制在 32 位或 64 位平台上相同。所以你必须改变算法或粒度。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2015-07-08
    • 2022-07-12
    • 1970-01-01
    相关资源
    最近更新 更多