Qué tal si aplicas un VACUUM FULL a esa tabla, después un REINDEX y finalmente 
planificas un VACUUM manual desde el cron que se ejecute más a menudo sobre esa 
tabla y analizas el resultado final a ver qué sucede.

Supongo que si el vacuum se tarda, es porque no ha terminado de hacer su 
trabajo.

Saludos a todos.

De: [email protected] 
[mailto:[email protected]] En nombre de Ivan Perales M.
Enviado el: viernes, 10 de febrero de 2012 03:18:AM
Para: [email protected]
Asunto: [pgsql-es-ayuda] Tamaño en tabla toast para tipo de dato bytea

Hola que tal, hace poco enfrente un problema que a la fecha no he podido 
solucionar. No soy muy experto en postgres y me disculpo por eso, aunque ya 
llevo varios años utilizandola.

El problema es el siguiente, tengo el mismo sistema corriendo en dos redes 
separadas, ambos corren postgresql 8.3.14. Tengo una tabla con el tipo de datos 
bytea para cargar cualquier tipo de archivo, y hasta donde se se han cargado 
archivos de word, excel, imagenes en formato jpg, png, etc. El funcionamiento 
esta de lujo. El problema viene con la tabla toast que se crea para el almacen. 
En uno de los dos sistemas, llevan aproximadamente cargados 350 registros, y el 
resultado que me da la funcion pg_total_relation_size es de aprox 756 megas, en 
lo cual estoy de acuerdo, ya que seguramente los usuarios cargan imagenes que 
salen directamente de la camara digital las cuales andan desde 2 hasta 6 megas. 
Pero en el otro sistema, le han dado un uso un poco mas grande, han cargado 
4005 registros, pero el tamaño de la tabla toast llega hasta los 60 GB!, no lo 
puedo creer, aunque cargaran imagenes de 10 megas, las matematicas me dicen que 
deberian ser 39.1 GB, y eso es exagerandole ya que no creo que las imagenes 
pasen de 2 megas. No encontre una funcion para obtener el tamaño de una columna 
o de una fila asi que no pude obtener el tamaño de cada celda  en especifico, 
pero se me hace increible. Si dumpeo la base con pg_dump y la restauro con psql 
-f, el tamaño de la tabla toast regresa a 17 GB, que es lo que yo supondria 
correcto. Al cabo de una semana, despues de agregar un par de cientos de 
archivos, la base vuelve a subir varias decenas de GB's. Esto jamas me habia 
ocurrido, solo esta en particular lo hace. Intente correr vacuum de forma 
manual pero se tarda mucho tiempo, eh esperado hasta 2 horas y no veo que 
termine. No se si sea ese el tiempo que se lleve. El autovacuum en esta version 
viene activado de forma predeterminada y asi lo he dejado. Tenia la base 
corriendo desde abril del 2011 y no habia tenido este problema. Hace como 1 mes 
por varios error que no lograba depurar en la programacion del sistema, 
habilite el log del postgresql y asi lo deje, 4 semanas despues la tabla toast 
ocupaba 250 GB. Deshabilite el log, restaure desde un dump y de empezar con 16 
GB a una semana despues ya va en 60 GB. Ya se que suendo medio paranoico pero 
esto comenzo desde que habilite el log. Ya deshabilite el log pero sigue 
haciendo lo mismo.

Realmente me falta mucho para aprender bien postgres, es por eso que recurro a 
ustedes, si tienen alguna idea o pista que me pueda guiar con el problema. De 
antemano agradezco su atencion y tiempo.

--
Lindolfo Iván Perales Mancinas
Cel. 481-126-2700
Solo existen 10 tipos de personas en el mundo, las que saben binario y las que 
no.

Responder a