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
