名前

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

概要

integer ST_Mem_Size(geometry geomA);

説明

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

これは、pg_size_pretty, pg_relation_size, pg_total_relation_sizeを持つPostgreSQLへの素晴らしい賛辞です。

[注記]

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

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

この関数は3次元に対応し、Z値を削除しません。

このメソッドは曲線ストリングと曲線に対応しています。

この関数は多面体サーフェスに対応しています。

この関数は三角形と不整三角形網(TIN)に対応しています。

-- マサチューセッツデータセット内のボストンのバイト数を返します
SELECT pg_size_pretty(SUM(ST_Mem_Size(the_geom))) as totgeomsum,
pg_size_pretty(SUM(CASE WHEN town = 'BOSTON' THEN st_mem_size(the_geom) ELSE 0 END)) As bossum,
CAST(SUM(CASE WHEN town = 'BOSTON' THEN st_mem_size(the_geom) ELSE 0 END)*1.00 /
                SUM(st_mem_size(the_geom))*100 As numeric(10,2)) As perbos
FROM towns;

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


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

---
73

-- このジオメトリがテーブル全体に占める割合のパーセンテージ表示
SELECT pg_total_relation_size('public.neighborhoods') As fulltable_size, sum(ST_Mem_Size(the_geom)) As geomsize,
sum(ST_Mem_Size(the_geom))*1.00/pg_total_relation_size('public.neighborhoods')*100 As pergeom
FROM neighborhoods;
fulltable_size geomsize  pergeom
------------------------------------------------
262144         96238         36.71188354492187500000
        

関連情報