Diego que tal buen dia Queria preguntarte porque esta creciendo tanto tu BD ¿no sera que por ejemplo tienes fotos gigantes y no las necesitas tan grandes?
Por ejemplo a mi me pasaba que mis usuarios tomaban fotos con camaras y celulares con resoluciones de 8 10 o hasta 16Mb y luego las subian a la BD a traves del sistema y bueno el resultado es que cada imagen la mas pequeña pesaba 3 MB y cuando las mostraban en pantalla en el monitor pues ni siquiera caben en el monitor tenian estar jugando con la lupa para que puedan verse. y claro se ajustaba el tamaño en el sistema web pero igual a veces se notaba lento cuando tenia que cargar una iamgen muy grande Asi que lo que hice fue pues cambiarle el tamaño a todas las fotos considerando solo un alto maximo de 999 pixeles y conservando el ratio de aspecto asi ocupa casi todo el alto de la mayoria de monitores y se ven bien. bueno lo hice por partes con un where para ir avanzando y reduje el tamaño de mi BD como 40 Gb en mi caso no tengo tanta información. Quizas sea tu caso aqui te dejo el script en php que use para cambiar el tamaño a las imagenes quizas sea tu caso. set_time_limit(0); ini_set('gd.jpeg_ignore_warning', 1); $conn = pg_connect("user=usuario password=clave dbname=nombre_bd host=ip_del_deserver port=5433"); $result = pg_query($conn, "SELECT fotos_notif_id FROM cp_fotos_notif where fotos_notif_id >= 17105 "); session_start(); ob_end_flush(); ob_start(); while ($raw = pg_fetch_array($result)) { $query = pg_query($conn, "SELECT foto FROM cp_fotos_notif where fotos_notif_id = " . $raw['fotos_notif_id'] . " "); $row = pg_fetch_row($query); $image = pg_unescape_bytea($row[0]); $fichero = file_put_contents('image_original.jpg', $image); $fotito = 'image_original.jpg'; //Ruta de la imagen original $rutaImagenOriginal = $fotito; //Creamos una variable imagen a partir de la imagen original $img_original = imagecreatefromjpeg($rutaImagenOriginal); //Se define el maximo ancho o alto que tendra la imagen final $max_ancho = 999; $max_alto = 999; //Ancho y alto de la imagen original list($ancho, $alto) = getimagesize($rutaImagenOriginal); if ($alto > 999) { //Se calcula ancho y alto de la imagen final $x_ratio = $max_ancho / $ancho; $y_ratio = $max_alto / $alto; //Si el ancho y el alto de la imagen no superan los maximos, //ancho final y alto final son los que tiene actualmente if (($ancho <= $max_ancho) && ($alto <= $max_alto)) {//Si ancho $ancho_final = $ancho; $alto_final = $alto; } /* * si proporcion horizontal*alto mayor que el alto maximo, * alto final es alto por la proporcion horizontal * es decir, le quitamos al alto, la misma proporcion que * le quitamos al alto * */ elseif (($x_ratio * $alto) < $max_alto) { $alto_final = ceil($x_ratio * $alto); $ancho_final = $max_ancho; } /* * Igual que antes pero a la inversa */ else { $ancho_final = ceil($y_ratio * $ancho); $alto_final = $max_alto; } //Creamos una imagen en blanco de tamanio $ancho_final por $alto_final . $tmp = imagecreatetruecolor($ancho_final, $alto_final); //Copiamos $img_original sobre la imagen que acabamos de crear en blanco ($tmp) imagecopyresampled($tmp, $img_original, 0, 0, 0, 0, $ancho_final, $alto_final, $ancho, $alto); //Se destruye variable $img_original para liberar memoria imagedestroy($img_original); //Definimos la calidad de la imagen final $calidad = 95; //Se crea la imagen final en el directorio indicado imagejpeg($tmp, "ejemplo.jpg", $calidad); $data = file_get_contents('ejemplo.jpg'); $pg_tmp = pg_escape_bytea($data); //pg_query($conn, "insert into fotitos (foto) values('{$pg_tmp}')"); pg_query($conn, "UPDATE cp_fotos_notif SET foto = '{$pg_tmp}' WHERE fotos_notif_id = " . $raw['fotos_notif_id'] . " "); echo 'se actualizo'.$raw['fotos_notif_id'].'<br>'; } else { echo $raw['fotos_notif_id'].' ya tiene el tamaño menor a 999 <br>'; } ob_flush(); flush(); } pg_close($conn); El 4 de agosto de 2017, 11:11, Diego Ayala <netdieg...@gmail.com> escribió: > Buenos días, tengo un compañero de una institución que esta teniendo > problemas, el problema es el siguiente, tiene una DB PostgresSQL 8.3 sobre > windows, aclaro que es un sistema critico, y que al adquirir el software > hace varios años, se lo entregaron asi, el tema es que se esta quedando sin > espacio en disco, y ya no puede agregar discos(tiene 2TB de capacidad, pero > ya esta utilizado 1,8 TB), el cluster tiene varias DB's, pero es una DB la > que tiene 1 sola tabla que es la que esta con crecimiento , la tabla tiene > 1.5TB (imágenes), que esta sobre un tablespace (otro disco) que también > esta quedando sin espacio, la pregunta que tengo, como se puede optimizar > el Backup, pg_dump, ya que dura aproximadamente 16hs en terminar y otras 15 > horas en restore, es un sistema critico que no se puede parar por mucho > tiempo, la idea es migrar a un servidor nuevo, con mas disco, pero implica > parar para realizar el bkp, pero es mucho tiempo, alguien podria darme una > mano de como realizarlo, lastimosamente, el 8.3 no tiene todavia la > replicacion nativa, por lo tanto no puedo utilizar el SR. > > Gracias. > > -- José Mercedes Venegas Acevedo cel Mov RPC 964185205 Member of the PHP Documentation Group (Spanish)