it-swarm.com.de

Postgres DB-Größenbefehl

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');
279
Beautiful Mind

Und ... Wenn Sie keine vollständige Abfrage eingeben möchten ... können Sie auch Folgendes eingeben ...

\l+ <database_name>

und Sie erhalten einige Details über die 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 den Befehl postgresql aufrufen, um mit diesen Postgresql-Hilfsbefehlen eine Abfrage durchzuführen.

Überprüfen Sie andere postgresql-Hilfsbefehle, indem Sie Folgendes eingeben

\?

an der Eingabeaufforderung postgresql.

324
Ashish

Sie können die Namen aller Datenbanken, zu denen Sie eine Verbindung herstellen können, aus der Systemtabelle "pg_datbase" abrufen. Wenden Sie die Funktion einfach auf die Namen an (siehe unten).

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 einem Computer anstelle von einem Menschen verwendet wird, können Sie die Funktion pg_size_pretty () ausschneiden.

-- 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.

68
owyongsk

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;
23
Anoop Sharma
SELECT pg_size_pretty(pg_database_size('name of database'));

Gibt Ihnen die Gesamtgröße einer bestimmten Datenbank an, aber ich glaube nicht, dass Sie alle Datenbanken innerhalb eines Servers ausführen können.

Wie auch immer du das tun könntest ...

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;
$$
12
Shaun McCready

Aus dem PostgreSQL-Wiki .


Datenbanken, zu denen der Benutzer keine Verbindung herstellen kann, werden so sortiert, als ob sie eine unendliche Größe hätten.

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, mit denen Sie die Größe Ihrer größten Relationen und Tabellen ermitteln können.

11
GollyJer

Starten Sie pgAdmin, stellen Sie eine Verbindung zum Server her, klicken Sie auf den Datenbanknamen und wählen Sie die Registerkarte "Statistik". Die Größe der Datenbank sehen Sie 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.

4
SPRBRN

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;
2
Anvesh
du -k /var/lib/postgresql/ |sort -n |tail
1
Jon Carnes