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');
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.
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 ().
-- 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 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
.
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;
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;
$$
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.
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.
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;
du -k /var/lib/postgresql/ |sort -n |tail