Raul Andres Duque escribió: > Alvaro, yo en el único caso en que uso el VACUUM FULL (por lo que había > entendidode él) es cuando borro MUCHOS registros en una DB existente ... > por ejemplo cuando quiero inicializar datos para una nueva instalación > conservando un mínimo de los registros existentes. Y desde hace como 1 > mes (por lo que se comentó en la lista) hago un REINDEX posterior al > VACCUM FULL. Lógicamente cuando realizo esta operación no existen > usuarios conectados por lo cual el tema de bloqueo de tablas no es > problema. > > A lo que voy es: Es este un uso RECOMENDABLE del VACUUM FULL o nisiquiera > en este caso es recomendable?
Eso califica como un caso de borde. De hecho esa clase de usos es el motivo por el cual VACUUM FULL no se ha eliminado todavía. Seguramente en alguna versión futura (8.5?), se escribirá una implementación más eficiente que la actual que permita resolver el problema del exceso de registros "muertos", sin toda la complejidad del código actual y sin necesidad de un REINDEX posterior. Ahora, la verdad es que hay una manera mejor de hacer eso: suponiendo que la tabla se llama "tab" y que tiene una columna "col" que es de tipo integer, podrías hacer esto: alter table tab alter column col set type integer; (puede haber algún error de sintaxis pero la idea es esa) Esto crea una nueva versión de la tabla, sin incluir las tuplas muertas, se demora mucho menos que VACUUM FULL, y no necesita un REINDEX posterior. -- Alvaro Herrera Developer, http://www.PostgreSQL.org/ "[PostgreSQL] is a great group; in my opinion it is THE best open source development communities in existence anywhere." (Lamar Owen) -- TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán