Gibt es einen Befehl zum Ermitteln der gesamten Datenbankgröße in Postgres?
Ich kann die Größe einer bestimmten Datenbank mithilfe des folgenden Befehls ermitteln:
select pg_database_size('databaseName');
Gibt es einen Befehl zum Ermitteln der gesamten Datenbankgröße in Postgres?
Ich kann die Größe einer bestimmten Datenbank mithilfe des folgenden Befehls ermitteln:
select pg_database_size('databaseName');
Antworten:
Und ... Wenn Sie nicht eine ganze Abfrage eingeben möchten, können Sie auch ...
\l+ <database_name>
und Sie erhalten einige Details zur Datenbank, einschließlich der Größe der Datenbank.
Und ... um die Größe aller Datenbanken zu ermitteln.
Sie können einfach eingeben ...
\l+
Möglicherweise müssen Sie in die Eingabeaufforderung postgresql gehen, um mit diesen postgresql-Hilfsbefehlen abzufragen.
Überprüfen Sie andere postgresql-Hilfsbefehle durch Eingabe
\?
an der postgresql-Eingabeaufforderung.
Sie können die Namen aller Datenbanken, mit denen Sie eine Verbindung herstellen können, aus der Systemtabelle "pg_datbase" abrufen. Wenden Sie die Funktion einfach wie unten beschrieben auf die Namen an.
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;
Wenn Sie beabsichtigen, dass die Ausgabe von einer Maschine anstelle eines Menschen verwendet wird, können Sie die Funktion pg_size_pretty () deaktivieren.
pg_database_size()
enthält die Größen für Indizes
\l+
. Das Ausgabeformat ist jedoch leichter zu lesen (weniger Spalten). Kompromiss zwischen Schreibbarkeit und Lesbarkeit…
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
Basierend auf der Antwort hier von @Hendy Irawan
Datenbankgrößen anzeigen:
\l+
z.B
=> \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 |
Tischgrößen anzeigen:
\d+
z.B
=> \d+
public | tuneeca_prd | table | tomcat | 8192 bytes |
public | tuneeca_stg | table | tomcat | 1464 kB |
Funktioniert nur in psql
.
\d+ *
gearbeitet, einfach \d+
zurückgekehrtDid not find any relations.
\c dbname
) und dann \d+
.
Ja, es gibt einen Befehl zum Ermitteln der Größe einer Datenbank in Postgres. Es ist das Folgende:
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'));
Gibt Ihnen die Gesamtgröße einer bestimmten Datenbank, aber ich glaube nicht, dass Sie alle Datenbanken innerhalb eines Servers ausführen können.
Wie auch immer Sie dies tun könnten ...
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
diesem abscheulichen pl / pgsql sein?
Aus dem PostgreSQL-Wiki .
HINWEIS: Datenbanken, zu denen der Benutzer keine Verbindung herstellen kann, werden so sortiert, als wären sie unendlich groß.
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
Die Seite enthält auch Ausschnitte zum Ermitteln der Größe Ihrer größten Beziehungen und größten Tabellen.
Sie können die folgende Abfrage verwenden, um die Größe aller Datenbanken von PostgreSQL zu ermitteln.
Die Referenz stammt aus diesem Blog.
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;
Starten Sie pgAdmin, stellen Sie eine Verbindung zum Server her, klicken Sie auf den Datenbanknamen und wählen Sie die Registerkarte Statistik. Sie sehen die Größe der Datenbank am Ende der Liste.
Wenn Sie dann auf eine andere Datenbank klicken, bleibt diese auf der Registerkarte Statistik, sodass Sie ohne großen Aufwand problemlos viele Datenbankgrößen anzeigen können. Wenn Sie die Tabellenliste öffnen, werden alle Tabellen und ihre Größen angezeigt.
Databases
Baumknoten klicken (an eine DB-Verbindung angehängt) und die Statistics
Registerkarte auswählen , wird eine schöne Zusammenfassung aller Datenbanken und ihrer Größen angezeigt (dritte Spalte).
du -k /var/lib/postgresql/ |sort -n |tail
du -k /var/lib/pgsql/ | sort -n | tail