Name

ST_MemSize — ジオメトリが取る容量 (バイト単位)を返します。

Synopsis

integer ST_MemSize(geometry geomA);

説明

ジオメトリが取る容量 (バイト単位)を返します。

この関数はPostgreSQLビルトイン関数pg_clumn_size, pg_size_pretty, pg_relation_size, pg_total_relation_sizeへのすばらしい賛辞です。

[Note]

テーブルのバイト単位のサイズを与えるpg_relation_sizeはST_Mem_Sizeより小さいバイト数が返ります。これはpg_relation_sizeがTOAST化されたテーブルの寄与を追加せず、TOASTテーブルに格納された大きなジオメトリを加えないためです。

pg_total_relation_size - テーブル、TOASTテーブル、インデクスを含みます。

pg_column_sizeは、ジオメトリがカラム内で取る領域がどれだけかを、圧縮を考慮して返します。そのため、ST_MemSizeより小さくなることがあります。

This function supports 3d and will not drop the z-index.

This method supports Circular Strings and Curves

This function supports Polyhedral surfaces.

This function supports Triangles and Triangulated Irregular Network Surfaces (TIN).

Changed: 2.2.0 命名規則に従うためにST_MemSizeに変更しました。以前の版では、この関数はST_Mem_Sizeと呼ばれていました。古い名前は非推奨ですが現在のところは有効です。

-- マサチューセッツ州データセットにおいて
-- ボストンがどれだけの容量を取るかを返します
SELECT pg_size_pretty(SUM(ST_MemSize(the_geom))) as totgeomsum,
pg_size_pretty(SUM(CASE WHEN town = 'BOSTON' THEN ST_MemSize(the_geom) ELSE 0 END)) As bossum,
CAST(SUM(CASE WHEN town = 'BOSTON' THEN ST_MemSize(the_geom) ELSE 0 END)*1.00 /
                SUM(ST_MemSize(the_geom))*100 As numeric(10,2)) As perbos
FROM towns;

totgeomsum        bossum        perbos
----------        ------        ------
1522 kB                30 kB        1.99


SELECT ST_MemSize(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'));

---
73

-- ジオメトリだけでテーブルの何パーセントを取っているか
SELECT pg_total_relation_size('public.neighborhoods') As fulltable_size, sum(ST_MemSize(the_geom)) As geomsize,
sum(ST_MemSize(the_geom))*1.00/pg_total_relation_size('public.neighborhoods')*100 As pergeom
FROM neighborhoods;
fulltable_size geomsize  pergeom
------------------------------------------------
262144         96238         36.71188354492187500000
        

関連情報