viernes, 19 de agosto de 2011

Listar BD y tablas con sus respectivos tamaños

Para listar las bases de datos con el tamaño ocupado en disco de cada una:

  • SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database ORDER BY pg_database_size(pg_database.datname);

Para listar las tablas con el tamaño ocupado en disco de cada una, pero solo del schema 'public' (probado en PostgreSql 8.1):

  • SELECT tablename, pg_size_pretty(pg_total_relation_size(tablename)) FROM pg_tables WHERE schemaname = 'public'  ORDER BY pg_total_relation_size(tablename);

Para que la última consulta funcione en Postgre 8:4, hay que utilizar casting:
  • SELECT tablename, pg_size_pretty(pg_total_relation_size(tablename::TEXT)) FROM pg_tables WHERE schemaname = 'public' ORDER BY pg_total_relation_size(tablename::TEXT);
Esto lo probé en 8.1 y 8.4 (únicas versiones que tengo a mano).

No hay comentarios: