Saltar al contenido

¿Cómo encuentra el tamaño de disco de una tabla Postgres/PostgreSQL y sus índices?

Queremos enseñarte la mejor solución que encontramos por todo internet. Nosotros deseamos que te sea de utilidad y si puedes compartir alguna mejora hazlo libremente.

Solución:

Pruebe las funciones de tamaño de objeto de la base de datos. Un ejemplo:

SELECT pg_size_pretty(pg_total_relation_size('"".""'));

Para todas las tablas, algo como:

SELECT
    table_schema || '.' || table_name AS table_full_name,
    pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables
ORDER BY
    pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;

Editar: aquí está la consulta enviada por @phord, por conveniencia:

SELECT
    table_name,
    pg_size_pretty(table_size) AS table_size,
    pg_size_pretty(indexes_size) AS indexes_size,
    pg_size_pretty(total_size) AS total_size
FROM (
    SELECT
        table_name,
        pg_table_size(table_name) AS table_size,
        pg_indexes_size(table_name) AS indexes_size,
        pg_total_relation_size(table_name) AS total_size
    FROM (
        SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
        FROM information_schema.tables
    ) AS all_tables
    ORDER BY total_size DESC
) AS pretty_sizes;

Lo he modificado ligeramente para usar pg_table_size() para incluir metadatos y hacer que los tamaños se sumen.

Mostrar tamaños de base de datos:

l+

p.ej

=> 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 | 

Mostrar tamaños de mesa:

d+

p.ej

=> d+
 public | tuneeca_prd | table | tomcat | 8192 bytes | 
 public | tuneeca_stg | table | tomcat | 1464 kB    | 

solo funciona en psql.

(Resumen de la respuesta de @zkutch).

Si el nombre de la base de datos es snortla siguiente oración le da tamaño:

psql -c "l+ snort" | awk -F "|" 'print $7'

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología