El 16/08/17 a las 15:58, Maria Antonieta Ramirez escribió:
> 
> De ante mano agradezco su atencion, tengo una duda muy grande les explico:
> 
> 
> Mi respaldo ha ido creciendo muy rapido de una base de datos postgres
> version 9.4 , ahorita mi respaldo pesa 918.615 kb, diario va creciendo.
> 
> 
> asi hago mi respaldo:
> 
> 
> pg_dump.exe -i -h 192.168.2.185 -p 5432 -U postgres -F c -b -v -f
> "E:\resp\mayo/BACKUP_educacion_cambios_%FECHA%.backup" educacion_cambios
> 
> 
> pues mi base a respaldar se llama educacion_cambios.
> 
> 
> 
> si cinsulto el tamaño de mi base de datos asi:
> 
> 
> SELECT
> pg_database.datname,
> pg_size_pretty(pg_database_size(pg_database.datname)) AS size
> FROM pg_database;
> 
> 
> me da un tamaño de :  "1695 MB"
> 
> 
> 
> Entonces ejecute este query para ver el tamaño de las tablas:
> 
> 
> SELECT
> relname AS objectname, relkind AS objecttype,
> reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size
> FROM pg_class
> ORDER BY relpages DESC;

Porque usas relpages en lugar de pg_relation_size()?

> y me dice que tengo una tabla llamada asi: "pg_toast_2557268" con este
> tamaño: "988 MB"

Esa tabla es donde se almacenan datos que requieren mayor almacenamiento
(text, varchar, etc.). En el caso particular de esta toast table podes
ver a cual tabla pertenece usando la siguiente consulta:

SELECT 2557268::regclass;


> Mis dudas son las siguientes:
> 
> 
> 1.- Visualize que tengo varias tablas que inician con el mismo nombre:
> pg_toast* , ¿de que son estas tablas?, ya que no las encuentro
> graficamente con el pgadmin3.

No son tablas que puedas acceder directamente, sino que postgres accede
a los datos almacenados ahí cuando se consultan filas de la tabla que
extiende.

Puedes ver las tablas toast con la siguiente consulta:

select * from pg_class where relkind ='t'

Pero no me preocuparía mucho por ello ahora.

> 2.- ¿Escorrecto como estoy respaldando si quiero solo respaldar las
> tablas de mi base de datos "educacion_cambios"?

Si, eso va a volcar la estructura y los datos en formato COPY. Cada fila
del COPY se forma con los datos de la tabla mas datos extendidos que
hayan en la tabla toast, si es que existe.

> 3.- Si mi tabla mas grande de mi base de datos "educacion_cambios"
> pesa "116 MB", ¿porque mi respaldo va creciendo tanto de manera
> significativa desde hace  un mes aproximadamente y hace un mes mi
> respaldo pesaba 371.688 KB.?

Recomiendo usar las funciones pg_relation_size(), pg_table_size() y
pg_total_relation_size().

Más informacion sobre dichas funciones acá:

https://www.postgresql.org/docs/9.4/static/functions-admin.html

> Ojala me puedan orientar.
> 
> Les he aplicado a  las tablas de mi base de datos  VACUMM-FULL Y despues
> REINDEX, y solo baja el tamaño del respaldo muy poquito y sigue subiendo
> el tamaño cada que se ejecuta.

Ni VACUUM FULL, ni REINDEX van a reducir el tamaño de un respaldo logico
(o sea un respaldo tomado con pg_dump).

El respaldo crece porque tenes más datos. Deberías usar las funciones
correctas (las que menciono arriba, y algunas otras que hay en el link
de la documentación) para saber quien está consumiendo tanto espacio.

Por ejemplo, una consulta como esta puede ayudarte:

select oid::regclass,
pg_size_pretty(pg_total_relation_size(oid)-pg_indexes_size(oid)) as
"Tamaño tabla + toast"
from pg_class
where relkind = 'r'
order by pg_total_relation_size(oid)-pg_indexes_size(oid) desc

Escribe otras consultas para obtener tamaño en tabla, en toast o de los
indices de cada tabla.

Saludos,

-- 
Martín Marqués                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

Reply via email to