回答:
接続できるすべてのデータベースの名前を「pg_datbase」システムテーブルから取得できます。以下のように、名前に関数を適用するだけです。
select t1.datname AS db_name,
pg_size_pretty(pg_database_size(t1.datname)) as db_size
from pg_database t1
order by pg_database_size(t1.datname) desc;
出力を人間ではなくマシンで使用する場合は、pg_size_pretty()関数をカットできます。
pg_database_size()
含みます
\l+
。ただし、出力フォーマットは読みやすくなっています(列が少ない)。書き込み可能性と読みやすさのトレードオフ…
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
回答に基づいて、ここによる@Hendy Irawan
データベースのサイズを表示:
\l+
例えば
=> \l+
berbatik_prd_commerce | berbatik_prd | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 19 MB | pg_default |
berbatik_stg_commerce | berbatik_stg | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 8633 kB | pg_default |
bursasajadah_prd | bursasajadah_prd | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 1122 MB | pg_default |
表のサイズを表示:
\d+
例えば
=> \d+
public | tuneeca_prd | table | tomcat | 8192 bytes |
public | tuneeca_stg | table | tomcat | 1464 kB |
でのみ機能しpsql
ます。
\d+ *
働いただけで平野が\d+
戻ってきましたDid not find any relations.
\c dbname
)、次に接続します\d+
。
はい、Postgresにはデータベースのサイズを見つけるコマンドがあります。それは次のとおりです。
SELECT pg_database.datname as "database_name", pg_size_pretty(pg_database_size(pg_database.datname)) AS size_in_mb FROM pg_database ORDER by size_in_mb DESC;
SELECT database_name, pg_size_pretty(size) from (SELECT pg_database.datname as "database_name", pg_database_size(pg_database.datname) AS size FROM pg_database ORDER by size DESC) as ordered;
SELECT pg_database.datname AS "DB Name", pg_size_pretty(pg_database_size(pg_database.datname)) AS "Size" FROM pg_database ORDER BY (pg_database_size(pg_database.datname)) DESC;
。
SELECT pg_size_pretty(pg_database_size('name of database'));
特定のデータベースの合計サイズがわかりますが、サーバー内ですべてのデータベースを実行できるとは思いません。
しかし、あなたはこれを行うことができます...
DO
$$
DECLARE
r RECORD;
db_size TEXT;
BEGIN
FOR r in
SELECT datname FROM pg_database
WHERE datistemplate = false
LOOP
db_size:= (SELECT pg_size_pretty(pg_database_size(r.datname)));
RAISE NOTICE 'Database:% , Size:%', r.datname , db_size;
END LOOP;
END;
$$
pg_database
この恐ろしいpl / pgsqlではなく単一のクエリではないのですか?
注:ユーザーが接続できないデータベースは、サイズが無限であるかのようにソートされます。
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
ELSE 'No Access'
END AS Size
FROM pg_catalog.pg_database d
ORDER BY
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_database_size(d.datname)
ELSE NULL
END DESC -- nulls first
LIMIT 20
このページには、最大のリレーションと最大のテーブルのサイズを見つけるためのスニペットもあります。
以下のクエリを使用して、PostgreSQLのすべてのデータベースのサイズを確認できます。
SELECT
datname AS DatabaseName
,pg_catalog.pg_get_userbyid(datdba) AS OwnerName
,CASE
WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(datname))
ELSE 'No Access For You'
END AS DatabaseSize
FROM pg_catalog.pg_database
ORDER BY
CASE
WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
THEN pg_catalog.pg_database_size(datname)
ELSE NULL
END DESC;
pgAdminを起動してサーバーに接続し、データベース名をクリックして、統計タブを選択します。リストの一番下にデータベースのサイズが表示されます。
次に、別のデータベースをクリックすると、統計タブにとどまるため、多くのデータベースサイズを簡単に確認できます。テーブルリストを開くと、すべてのテーブルとそのサイズが表示されます。
Databases
(DB接続に接続されている)ツリーノードをクリックしてStatistics
タブを選択すると、すべてのデータベースとそのサイズ(3列目)の概要が表示されます。