Estoy ejecutando una base de datos PostgreSQL que tiene varias tablas que almacenan información de registro. Esta información tiene únicamente fines informativos y se descarga en un archivo y se elimina de la base de datos si tiene más de 30 días.
Puede haber millones de filas eliminadas, y hemos estado ejecutando un REINDEX cada vez después de la eliminación.
¿Es esto suficiente, o también deberíamos estar ejecutando un VACÍO o un ANÁLISIS DE VACÍO? ¿O no es necesario REINDEX y deberíamos simplemente ejecutar un VACUUM o VACUUM ANALYZE?
Estamos utilizando PostgreSQL 8.2.3, que creo que no permite la aspiración automática.
Respuestas:
Debe hacer un ANÁLISIS DE VACÍO ya que el VACÍO permitirá que el espacio utilizado por los datos eliminados se reutilice y evitará que se envuelva la transacción, y ANALIZAR actualizará las estadísticas del planificador que deberían conducir a mejores planes de consulta para sus consultas de informes.
Un REINDEX no se requiere teóricamente, pero puede encontrar que da como resultado un mejor rendimiento ya que el índice es contiguo.
Las páginas de documentación relevantes para 8.2 están aquí (reindexación de rutina) y aquí (aspiración de rutina) .
fuente