Re: tamaño tabla toast

From: Martín Marqués <martin(dot)marques(at)2ndquadrant(dot)com>
To: Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>, FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: tamaño tabla toast
Date: 2017-08-16 21:40:49
Message-ID: 6ab6d1a6-08d0-1724-6eb7-a3edb09b7583@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martín Marqués 2017-08-16 21:41:58 Re: tamaño tabla toast
Previous Message Gerardo Herzig 2017-08-16 20:40:01 Re: tamaño tabla toast