Comment puis-je lister toutes les tables d'une base de données PostgreSQL et les classer par taille ?
sql
postgresql
postgresql-9.3
rien de spécial ici
la source
la source
\d+
vous montrera ces informations, bien que non triées.Réponses:
Cela vous montre la taille de toutes les tables du schéma
public
si vous avez plusieurs schémas, vous pouvez utiliser:Exemple SQLFiddle: http://sqlfiddle.com/#!15/13157/3
Liste de toutes les fonctions de taille d'objet dans le manuel .
la source
select table_schema, table_name, pg_relation_size(table_schema||'.'||table_name) from information_schema.tables order by 3;
merci pour l'aide!select * from information_schema.tables where table_schema = 'public';
ne produit aucune ligne même si le\dn
schéma est public. Peut-être qu'un changement dans 9.5 a causé cela?Cela vous montrera le nom du schéma, le nom de la table, la taille jolie et la taille (nécessaire pour le tri).
Je construis ceci sur la base des solutions de la liste de schémas avec des tailles (relatives et absolues) dans une base de données PostgreSQL
la source
Ce sera plus clair.
pg_size_pretty(<numeric_value>)
- convertit le nombre d'octets en format lisible par l'homme.pg_database_size(<db_name>)
- obtient la taille de la base de données en octets .pg_total_relation_size(<relation_name>)
- obtient la taille totale de la table et son index en octets .pg_relation_size(<relation_name>)
- obtient la taille de la relation (table / index) en octets .pg_index_size(<relation_name>)
- obtient la taille d'index de la relation en octets .current_database()
- obtient la base de données actuellement utilisée sur laquelle cette requête est exécutée.Requete:
Résultat:
Le format est humanisé représente dans
bytes
,kB
,MB
,GB
etTB
.bytes
àkB
- commence à partir de10240 bytes
bytes
àMB
- commence à partir de10485248 bytes
=10239.5 kB
~10 MB
bytes
àGB
- commence à partir de10736893952 bytes
=10239.5 MB
~10 BG
bytes
àTB
- commence à partir de10994579406848 bytes
=10239.5 GB
~10 TB
Toutes les conversions d'unités commencent à partir de
10 + <unit>
.Pour référence - Documentation officielle Postgres
la source
tiré d'ici https://wiki-bsse.ethz.ch/display/ITDOC/Check+size+of+tables+and+objects+in+PostgreSQL+database
la source
Une autre alternative
la source
J'avais besoin de trouver les tables qui utilisent le plus d'espace.
Sur la base d'autres réponses, j'ai utilisé cette requête:
J'obtiens le résultat suivant:
J'aurais dû acheter un SSD plus gros.
la source
la source