名称

ST_MemSize — 返回几何图形占用的内存空间总量。

大纲

integer ST_MemSize(geometry geomA);

描述

返回几何图形占用的内存空间量(以字节为单位)。

这补充了 PostgreSQL 内置 数据库 对象函数 pg_column_size、pg_size_pretty、pg_relation_size、pg_total_relation_size。

[注意]

给出表的字节大小的 pg_relation_size 可能返回小于 ST_MemSize 的字节大小。 这是因为 pg_relation_size 不会添加 toasted 表贡献,并且大型几何图形存储在 TOAST 表中。

pg_total_relation_size - 包括表、压缩表和索引。

pg_column_size 返回考虑到压缩,几何图形在列中占用多少空间,因此可能低于 ST_MemSize

该函数支持 3d 并且不会丢失 z-index。

此方法支持圆形字符串和曲线。

该函数支持多面体曲面。

此函数支持三角形和不规则三角网面 (TIN)。

更改:2.2.0 名称更改为 ST_MemSize 以遵循命名约定。

示例

Compare the memory used by all geometries in a Massachusetts town dataset with the subset for Boston.

Code
SELECT pg_size_pretty(sum(ST_MemSize(geom))) AS totgeomsum,
       pg_size_pretty(sum(CASE WHEN town = 'BOSTON' THEN ST_MemSize(geom) ELSE 0 END)) AS bossum,
       cast(
           sum(CASE WHEN town = 'BOSTON' THEN ST_MemSize(geom) ELSE 0 END) * 100.0
           / sum(ST_MemSize(geom)) AS numeric(10, 2)
       ) AS perbos
FROM towns;
栅格输出
totgeomsum | bossum | perbos
------------+--------+--------
 1522 kB    | 30 kB  |   1.99
(1 row)

Return the memory size of a CircularString in bytes.

Code
SELECT ST_MemSize('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'::geometry);
栅格输出
st_memsize
------------
         80
(1 row)

Calculate the percentage of a table's total size used by geometry data.

Code
SELECT pg_total_relation_size('public.neighborhoods') AS fulltable_size,
       sum(ST_MemSize(geom)) AS geomsize,
       sum(ST_MemSize(geom)) * 100.0
           / pg_total_relation_size('public.neighborhoods') AS pergeom
FROM neighborhoods;
栅格输出
fulltable_size | geomsize |         pergeom
----------------+----------+--------------------------
         262144 |    96238 | 36.71188354492187500000
(1 row)