Commande Postgres DB Size

Existe-t-il une commande pour trouver toute la taille des bases de données dans Postgres?

Je suis capable de trouver la taille d’une firebase database spécifique en utilisant la commande suivante:

select pg_database_size('databaseName'); 

Et … Si vous ne souhaitez pas taper une requête entière … vous pouvez également taper …

 \l+  

et vous obtiendrez des détails sur la firebase database, y compris la taille de la firebase database.

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

vous pouvez simplement taper …

 \l+ 

Vous devrez peut-être accéder à l’invite de commande postgresql pour interroger ces commandes auxiliaires postgresql.

Vérifiez d’autres commandes auxiliaires postgresql en tapant

 \? 

à l’invite de commande postgresql.

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 au lieu d’un humain, vous pouvez couper la fonction pg_size_pretty ().

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

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

Afficher les tailles de firebase database:

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

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

Depuis le wiki PostgreSQL .


Les bases de données auxquelles l’utilisateur ne peut pas se connecter sont sortingées comme si elles étaient de taille 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 a également des extraits pour trouver la taille de vos plus grandes relations et les plus grandes tables.

SELECT pg_size_pretty (pg_database_size (‘nom de la firebase database’));

Vous donnera la taille totale d’une firebase database particulière, mais je ne pense pas que vous pouvez faire toutes les bases de données dans un serveur.

Cependant, vous pourriez 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; $$ 

Oui, il existe une commande pour trouver la taille d’une firebase database dans Postgres. C’est le suivant:

 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; 

Démarrez pgAdmin, connectez-vous au serveur, cliquez sur le nom de la firebase database et sélectionnez l’onglet Statistiques. Vous verrez la taille de la firebase database au bas de la liste.

Ensuite, si vous cliquez sur une autre firebase database, celle-ci rest sur l’onglet Statistiques pour que vous puissiez facilement voir de nombreuses tailles de firebase database sans trop d’efforts. Si vous ouvrez la liste des tables, toutes les tables et leurs tailles s’affichent.

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

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; 
 du -k /var/lib/postgresql/ |sort -n |tail