¿Cómo puedo enumerar todas las tablas de una base de datos PostgreSQL y ordenarlas por tamaño ?
                    
                        sql
                                postgresql
                                postgresql-9.3
                                
                    
                    
                        nada-especial-aqui
fuente
                
                fuente

\d+le mostrará esta información, aunque sin clasificar.Respuestas:
Esto le muestra el tamaño de todas las tablas en el esquema
publicsi tiene varios esquemas, es posible que desee utilizar:Ejemplo de SQLFiddle: http://sqlfiddle.com/#!15/13157/3
Lista de todas las funciones de tamaño de objeto en el manual .
fuente
select table_schema, table_name, pg_relation_size(table_schema||'.'||table_name) from information_schema.tables order by 3;gracias por la ayuda!select * from information_schema.tables where table_schema = 'public';produce cero filas aunque\dnmuestra el esquema público. ¿Quizás un cambio en 9.5 causó esto?Esto le mostrará el nombre del esquema, el nombre de la tabla, el tamaño bonito y el tamaño (necesario para ordenar).
Construyo esto en base a las soluciones de esta lista de esquemas con tamaños (relativos y absolutos) en una base de datos PostgreSQL
fuente
Esto quedará más claro.
pg_size_pretty(<numeric_value>)- convierte el número de bytes a formato legible por humanos.pg_database_size(<db_name>)- obtiene el tamaño de la base de datos en bytes .pg_total_relation_size(<relation_name>)- obtiene el tamaño total de la tabla y su índice en bytes .pg_relation_size(<relation_name>)- obtiene el tamaño de la relación (tabla / índice) en bytes .pg_index_size(<relation_name>)- obtiene el tamaño del índice de la relación en bytes .current_database(): obtiene la base de datos utilizada actualmente en la que se realiza esta consulta.Consulta:
Resultado:
El formato humanizado se representan en
bytes,kB,MB,GB, yTB.bytesakB- comienza desde10240 bytesbytesaMB- comienza desde10485248 bytes=10239.5 kB~10 MBbytesaGB- comienza desde10736893952 bytes=10239.5 MB~10 BGbytesaTB- comienza desde10994579406848 bytes=10239.5 GB~10 TBTodas las conversiones de unidades comienzan desde
10 + <unit>.Para referencia - Documentación oficial de Postgres
fuente
tomado de aquí https://wiki-bsse.ethz.ch/display/ITDOC/Check+size+of+tables+and+objects+in+PostgreSQL+database
fuente
Otra alternativa
fuente
Necesitaba encontrar qué tablas usan más espacio.
Basado en otras respuestas, utilicé esa consulta:
Obtengo el siguiente resultado:
Debería haber comprado un SSD más grande.
fuente
fuente