¿Hay algún comando para encontrar el tamaño de todas las bases de datos en Postgres?
Puedo encontrar el tamaño de una base de datos específica usando el siguiente comando:
select pg_database_size('databaseName');
¿Hay algún comando para encontrar el tamaño de todas las bases de datos en Postgres?
Puedo encontrar el tamaño de una base de datos específica usando el siguiente comando:
select pg_database_size('databaseName');
Respuestas:
Y ... Si en caso de que no desee escribir una consulta completa ... también puede escribir ...
\l+ <database_name>
y obtendrá algunos detalles sobre la base de datos, incluido el tamaño de la base de datos.
Y ... Para obtener tamaños de todas las bases de datos.
solo puedes escribir ...
\l+
Puede que tenga que ir al símbolo del sistema postgresql para consultar con estos comandos auxiliares postgresql.
Verifique otros comandos de ayuda postgresql escribiendo
\?
en el símbolo del sistema postgresql.
Puede obtener los nombres de todas las bases de datos a las que puede conectarse desde la tabla del sistema "pg_datbase". Simplemente aplique la función a los nombres, como se muestra a continuación.
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 tiene la intención de que la salida sea consumida por una máquina en lugar de un humano, puede cortar la función pg_size_pretty ().
pg_database_size()
incluye los tamaños para los índices
\l+
. Sin embargo, el formato de salida es más fácil de leer (menos columnas). Compensación entre escritura y legibilidad ...
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
Basado en la respuesta aquí por @Hendy Irawan
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
.
\d+ *
funcionó, simplemente \d+
regresóDid not find any relations.
\c dbname
), luego hágalo \d+
.
Sí, hay un comando para encontrar el tamaño de una base de datos en Postgres. Es lo siguiente:
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'));
Le dará el tamaño total de una base de datos en particular, sin embargo, no creo que pueda hacer todas las bases de datos dentro de un servidor.
Sin embargo, podrías hacer esto ...
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
lugar de este horrible pl / pgsql?
Del wiki de PostgreSQL .
NOTA: Las bases de datos a las que el usuario no puede conectarse se ordenan como si tuvieran un tamaño infinito.
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 página también tiene fragmentos para encontrar el tamaño de sus relaciones más grandes y tablas más grandes.
Puede usar la consulta a continuación para encontrar el tamaño de todas las bases de datos de PostgreSQL.
Se toma referencia de este 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;
Inicie pgAdmin, conéctese al servidor, haga clic en el nombre de la base de datos y seleccione la pestaña de estadísticas. Verá el tamaño de la base de datos al final de la lista.
Luego, si hace clic en otra base de datos, permanece en la pestaña de estadísticas para que pueda ver fácilmente muchos tamaños de bases de datos sin mucho esfuerzo. Si abre la lista de tablas, muestra todas las tablas y sus tamaños.
Databases
nodo del árbol (adjunto a una conexión de base de datos) y selecciona la Statistics
pestaña, se le presentará un resumen agradable de todas las bases de datos y sus tamaños (tercera columna).
du -k /var/lib/postgresql/ |sort -n |tail
du -k /var/lib/pgsql/ | sort -n | tail