web-dev-qa-db-fra.com

Postgres DB Size Command

Existe-t-il une commande permettant de trouver toutes les bases de données dans Postgres?

Je suis capable de trouver la taille d'une base de données spécifique en utilisant la commande suivante:

select pg_database_size('databaseName');
279
Beautiful Mind

Et ... Au cas où vous ne voudriez pas taper toute une requête ... vous pouvez aussi taper ...

\l+ <database_name>

et vous obtiendrez quelques détails sur la base de données, y compris sa taille.

Et ... pour obtenir la taille de toutes les bases de données.

vous pouvez simplement taper ...

\l+

Vous devrez peut-être aller dans l'invite de commande postgresql pour lancer une requête avec ces commandes d'assistance postgresql.

Vérifiez les autres commandes d'assistance postgresql en tapant

\?

à l'invite de la commande postgresql.

324
Ashish

Vous pouvez obtenir les noms de toutes les bases de données auxquelles vous pouvez vous connecter à partir de la table système "pg_datbase". Appliquez simplement la fonction aux noms, comme ci-dessous.

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;

Si vous souhaitez que la sortie soit consommée par une machine plutôt que par un humain, vous pouvez couper la fonction pg_size_pretty ().

168
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
144

Basé sur la réponse ici par @ Hendy Irawan

Afficher les tailles de base de données:

\l+

par exemple.

=> \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 | 

Afficher les tailles de table:

\d+

par exemple.

=> \d+
 public | tuneeca_prd | table | Tomcat | 8192 bytes | 
 public | tuneeca_stg | table | Tomcat | 1464 kB    | 

Ne fonctionne que dans psql.

68
owyongsk

Oui, il existe une commande pour trouver la taille d’une base de données dans Postgres. C'est la suivante:

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'));

Vous donnera la taille totale d'une base de données particulière, mais je ne pense pas que vous puissiez utiliser toutes les bases de données d'un serveur.

Cependant, vous pouvez le faire ...

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

Depuis le wiki PostgreSQL .


Les bases de données auxquelles l'utilisateur ne peut pas se connecter sont triées comme si leur taille était infinie.

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

La page contient également des extraits permettant de déterminer la taille de vos plus grandes relations et de vos plus grands tableaux.

11
GollyJer

Lancez pgAdmin, connectez-vous au serveur, cliquez sur le nom de la base de données et sélectionnez l'onglet statistiques. Vous verrez la taille de la base de données au bas de la liste.

Ensuite, si vous cliquez sur une autre base de données, celle-ci reste sur l'onglet Statistiques afin que vous puissiez facilement voir de nombreuses tailles de base de données sans trop d'effort. Si vous ouvrez la liste des tables, toutes les tables et leurs tailles sont affichées.

4
SPRBRN

Vous pouvez utiliser la requête ci-dessous pour trouver la taille de toutes les bases de données de PostgreSQL.

La référence est tirée de ce 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