Existe-t-il une commande pour trouver toute la taille des bases de données dans Postgres?
Je peux trouver la taille d'une base de données spécifique en utilisant la commande suivante:
select pg_database_size('databaseName');
Existe-t-il une commande pour trouver toute la taille des bases de données dans Postgres?
Je peux trouver la taille d'une base de données spécifique en utilisant la commande suivante:
select pg_database_size('databaseName');
Réponses:
Et ... Si au cas où vous ne voudriez pas taper une requête entière ... vous pouvez également taper ...
\l+ <database_name>
et vous obtiendrez quelques détails sur la base de données, y compris la taille de la base de données.
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 commandes postgresql pour effectuer une requête avec ces commandes d'assistance postgresql.
Vérifiez les autres commandes d'assistance 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 ().
pg_database_size()
inclut les tailles des index
\l+
. Le format de sortie est cependant plus facile à lire (moins de colonnes). Compromis entre écriture et lisibilité…
-- 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 de @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 |
Fonctionne uniquement en psql
.
\d+ *
travaillé, plaine \d+
est revenueDid not find any relations.
\c dbname
), puis faites \d+
.
Oui, il existe une commande pour trouver la taille d'une base de données 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;
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'));
Vous donnera la taille totale d'une base de données particulière, mais je ne pense pas que vous puissiez faire toutes les bases de données sur 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;
$$
pg_database
plutôt que de ce hideux pl / pgsql?
À partir du wiki PostgreSQL .
REMARQUE: les bases de données auxquelles l'utilisateur ne peut pas se connecter sont trié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 contient également des extraits pour trouver la taille de vos plus grandes relations et de vos plus grandes tables.
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;
Démarrez 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, elle 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 tableaux, elle affiche tous les tableaux et leurs tailles.
Databases
nœud de l' arborescence (attaché à une connexion DB) et sélectionnez l' Statistics
onglet, vous serez présenté avec un joli résumé de toutes les bases de données et leurs tailles (troisième colonne).
du -k /var/lib/postgresql/ |sort -n |tail
du -k /var/lib/pgsql/ | sort -n | tail