Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

PostgreSQL VACUUM

El comando `VACUUM` de PostgreSQL se utiliza para limpiar y optimizar el almacenamiento de la base de datos recuperando el espacio ocupado por las tuplas muertas. Garantiza el funcionamiento eficaz de la base de datos evitando la hinchazón y manteniendo la salud de las tablas de la base de datos.

Utilización

El comando `VACUUM` se emplea para recuperar almacenamiento y mejorar el rendimiento de E/S eliminando datos obsoletos. Se suele utilizar después de que las tablas hayan sufrido actualizaciones o eliminaciones importantes.

VACUUM [FULL] [FREEZE] [VERBOSE] [table_name];

En esta sintaxis, `VACÍO` va seguido de parámetros opcionales:

  • `COMPLETO` para una limpieza más a fondo,
  • `FREEZE` para marcar agresivamente las tuplas como congeladas, evitando problemas de envoltura del ID de transacción,
  • `VERBOSE` para una salida detallada,
  • y `nombre_tabla` especifica qué tabla hay que aspirar.

Ejemplos

1. Vacío básico

VACUUM;

Este comando realiza una operación de vacío estándar en todas las tablas de la base de datos actual para liberar el espacio no utilizado.

2. Aspirar una tabla específica

VACUUM VERBOSE employees;

Este ejemplo aspira la tabla `empleados` y proporciona una salida detallada sobre la operación gracias a la opción `VERBOSE`.

3. Vacío total en una tabla

VACUUM FULL products;

Se utiliza `VACÍO LLENO` para recuperar todo el espacio de la tabla `productos`. Bloquea la tabla durante el proceso, lo que puede bloquear tanto las escrituras como las lecturas, pero permite recuperar el máximo espacio.

Consejos y buenas prácticas

  • Corre con regularidad. Programa operaciones rutinarias de vacío, especialmente en tablas que se actualicen con frecuencia, para evitar que se hinchen las bases de datos.
  • Considera la posibilidad de utilizar el `AUTOVACÍO`. Activa y configura el `AUTOVACUUM` para automatizar el proceso de aspiración y reducir el mantenimiento manual.
  • Utiliza "LLENO" con moderación. Reserva `VACÍO LLENO` para situaciones en las que haya que recuperar un espacio importante, ya que bloquea la tabla y puede consumir muchos recursos.
  • Controla el rendimiento. Utiliza `VERBOSE` para obtener información sobre el proceso de vacío y ajustar las configuraciones en función de los resultados.
  • Comprende la envoltura de la transacción. Vacía regularmente las tablas para evitar problemas de envoltura del ID de transacción, que pueden provocar la pérdida de datos.
  • Ten en cuenta el impacto en el rendimiento. Aunque un `VACUUM` estándar es menos perjudicial que un `VACUUM FULL`, puede afectar al rendimiento de bases de datos muy grandes, así que planifícalo en consecuencia.