Postgresqlサーバーでホストされているデータベースが50以上あります。それらの一部を別のホストに移動してディスク領域を解放する必要がありますが、ボリューム上の各データベースが使用するディスク領域をどのように測定できますか?
必要な情報を取得する機能はありますか?
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/
Postgresqlメタコマンドを使用できます:
\l
はデータベースをリストします\l+
は、サイズ、表領域、説明でリストを拡張します。使用する \?
メタコマンドの完全なリストを取得します。参照: https://www.postgresql.org/docs/9.5/static/app-psql.html
これは古い質問ですが、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