web-dev-qa-db-ja.com

Postgresqlがデータベースで使用される合計ディスク容量を見つける

Postgresqlサーバーでホストされているデータベースが50以上あります。それらの一部を別のホストに移動してディスク領域を解放する必要がありますが、ボリューム上の各データベースが使用するディスク領域をどのように測定できますか?

必要な情報を取得する機能はありますか?

34
pylover
SELECT pg_database_size('geekdb')

または

SELECT pg_size_pretty(pg_database_size('geekdb'))

http://www.thegeekstuff.com/2009/05/15-advanced-postgresql-commands-with-examples/

49
Robert Harvey

Postgresqlメタコマンドを使用できます:

  • \lはデータベースをリストします
  • \l+は、サイズ、表領域、説明でリストを拡張します。

使用する \?メタコマンドの完全なリストを取得します。参照: https://www.postgresql.org/docs/9.5/static/app-psql.html

23
sharez

これは古い質問ですが、Linuxコマンドの結果を確認する方法を作成しましたdf -h(ファイルシステム、サイズ、使用済み、使用可能、使用率、マウント済み)をsqlクエリ経由で使用して、特定のファイルシステムの空きディスク領域と使用可能なディスク領域の合計を取得します。質問の内容は正確ではありませんが、一部の使用者/私にとっては役立ちます。私は数時間前に答えがここにあったことを望んでいるので、ここに入れています(Linuxのみ):

次のようなcronジョブを作成します。

@hourly df -h | awk '{print $1","$2","$3","$4","$5","$6}' > /pathhere/diskspaceinfo.csv`

クエリする外部テーブルを作成します。

create extension file_fdw;

create server logserver FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE diskspaceinfo 
(file_sys text, size text, used text, avail text, used_pct text, mount text) 
SERVER fileserver 
OPTIONS (filename '/pathhere/diskspaceinfo.csv', format 'csv');

次に、次のようにテーブルをクエリします。

select * from diskspaceinfo

特定の何かが必要な場合は、もちろん、必要なものに合わせてテーブルをフィルタリングするだけです。制限はありますが、私にとっては非常に便利です。

plperluがある場合、次の関数を使用できます。 https://wiki.postgresql.org/wiki/Free_disk_space

便利なリンク: https://wiki.postgresql.org/wiki/Disk_Usage

1
mountainclimber