2016-07-11 5 views
0

フィルタに基づいて機能のディスクサイズをグループ化するテーブルを生成しようとしています。たとえば、これは私が使用することを期待するクエリの一種である:PostgreSQLでテーブルのサブセットのディスク使用量を調べる方法は?

このような何かを生成する
select trip,pg_size_pretty(pg_database_size('cav_wsu')) as size from wsu where time between 0 and 3600 group by trip; 

 trip   | size 
----------------------+------------- 
1000     | 120 kB  
1001     | 256 kB  
1002     | 111 kB  
1003     | 342 kB 

は、すべての可能なこのですか?

答えて

0

使用pg_column_sizeは:

select trip, pg_size_pretty(pg_column_size(wsu)::bigint) as size 
from wsu 
where time between 0 and 3600 
group by trip; 

(注)この機能は、インデックスとTOASTファイルが使用するスペースが含まれていないこと。

select trip, pg_size_pretty(pg_column_size(wsu)::bigint) as size, 
     pg_size_pretty((pg_column_size(wsu)::float/pg_relation_size('wsu') * pg_total_relation_size('wsu'))::bigint) as total_size 
from wsu 
where time between 0 and 3600 
group by trip; 
+0

:PostgreSQLは、しかし、あなたは、テーブルのサイズを合計サイズとテーブルのサイズ、および行サイズの比から、平均として、それを導き出すことができ、そのための値(私の知っていること)を提供していないようですありがとう!最初のものは動作しますが、2番目のものを動作させることはできません。また、私はすべての単一エントリ= 4バイトを得ている。私は彼らがより大きくなることを期待しました。フィルターをかけてcsv(\ g example.csv)にエクスポートすると、ファイルサイズがはるかに大きくなります(〜250kb)。どんな考え? – jarch

+0

ああ、そうです。これは、1つの列のサイズを計算しています。私はすべての列のサイズを計算したいと考えていました。 pg_column_size(column1)+ pg_column_size(column2)...などの他にこれを行う方法はありますか? – jarch

+0

おっと、あなたに@Ziggy Crueltyfree Zeitgeisterというタグを忘れた – jarch