No creo que necesite aspirar manualmente, a menos que comience a ver una degradación del rendimiento. Sin embargo, recomendaría encarecidamente revisar la configuración de vacío y autovacío y ajustarla a sus necesidades.
Para ver su configuración actual, ejecute esta consulta:
SELECT *
FROM pg_settings
WHERE name LIKE '%vacuum%'
La mayoría de los campos se explican por sí mismos, pero aquí hay documentación sobre ellos:
https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html
Yo diría que su objetivo debería ser configurar el vacío automático para limpiar la basura de manera consistente, pero no ejecutar el vacío automático constantemente
Las configuraciones más importantes son:
- autovacuum_vacuum_scale_factor : determina el porcentaje de tuplas que pueden estar muertas antes de que se inicie una limpieza. Valor predeterminado = 0.2
- autovacuum_vacuum_threshold : número mínimo de tuplas muertas antes de que se inicie la limpieza. Valor predeterminado = 50
El umbral ayuda a evitar que el proceso de limpieza se active con demasiada frecuencia para tablas pequeñas.
La configuración predeterminada funciona bien, a menos que tenga tablas muy grandes. En pocas palabras, si tiene una mesa que ocupa 100 GB, acumulará 20 GB de basura, antes de que se active el vacío automático. Por lo tanto, generalmente recomiendo establecer un factor de escala bajo. Qué tan bajo debes determinar por ti mismo. Yo uso 0.05 en mi proyecto actual
Los umbrales también se pueden aumentar. Muchas aplicaciones tienen un par de tablas, que se actualizan con frecuencia y 50 tuplas no es tanto. Aumentar eso a 1000 no debería conducir a ningún problema, pero por supuesto, debe considerar su propio caso
También puede ajustar el vacío automático y tener diferentes configuraciones para algunas de sus tablas
ALTER TABLE your_table SET (autovacuum_vacuum_scale_factor = 0.05);
Si configura scale_factor y umbrales, debería estar bien. También puede aumentar autovacuum_vacuum_cost_limit
, que por defecto es igual a vacuum_cost_limit
, que se establece en 200. Esta es una característica muy importante del vacío, que no le permite consumir todos los recursos y permite que su aplicación opere con datos incluso durante el proceso de vacío. , pero el valor predeterminado es demasiado bajo. Aumentarlo a 1000 no debería generar demoras significativas, pero permitirá que el proceso de vacío finalice mucho más rápido
Por supuesto, también puede ejecutar el vacío manualmente. En el caso más simple, puede tener un trabajo cron simple, que hará una limpieza completa todas las noches, cuando no se accede con frecuencia a su base de datos
¡Espero que ayude!