¿Necesito ejecutar VACUUM FULL y ANALYZE en tablas comunes periódicamente?
Sí.
Para las tablas que se agregan, eliminan o modifican con frecuencia, debe realizar periódicamente VACUUM FULL y ANALYZE para recuperar el espacio en disco ocupado por los datos actualizados o eliminados, evitando el deterioro del rendimiento causado por la acumulación de datos y estadísticas inexactas.
- Por lo general, se recomienda realizar ANALYZE después de un gran número de operaciones de adición o modificación se realizan en una tabla.
- Después de eliminar una tabla, se recomienda ejecutar VACUUM en lugar de VACUUM FULL. Sin embargo, puede ejecutar VACUUM FULL en algunos casos particulares, como cuando desea reducir físicamente una tabla para reducir el espacio ocupado en disco después de eliminar la mayoría de las filas de la tabla. Para obtener más información sobre las diferencias entre VACUUM y VACUUM FULL, consulte VACUUM y VACUUM FULL.
Sintaxis
Realice ANALYZE en una tabla.
ANALYZE table_name;
Realice ANALYZE en todas las tablas (tablas no extranjeras) de la base de datos.
ANALYZE;
Realice VACUUM en una tabla.
VACUUM table_name;
Realice VACUUM FULL en una tabla.
VACUUM FULL table_name;
Para más detalles, véase VACUUM y ANALYZE | ANALYSE.
- Si el uso de espacio físico no disminuye después de ejecutar el comando VACUUM FULL compruebe si había otras transacciones activas. (iniciado antes de eliminar las transacciones de datos y no finalizado antes de ejecutar VACUUM FULL). En caso afirmativo, vuelva a ejecutar este comando cuando las transacciones hayan finalizado.
- En la versión 8.1.3 o posterior, se puede invocar VACUUM/VACUUM FULL en el plano de gestión. Para obtener más información, consulte O&M inteligente.
VACUUM y VACUUM FULL
En GaussDB(DWS), la operación VACUUM es como una aspiradora utilizada para absorber el polvo. Aquí, "polvo" significa los datos antiguos. Si los datos no se borran de manera oportuna, el espacio de la base de datos se hinchará, causando un deterioro del rendimiento o incluso un fallo del sistema.
Finalidades del VACUUM:
- Resolver hinchazón de espacio: Borrar tuplas obsoletas e índices correspondientes, que incluyen la tupla (e índice) de una transacción de DELETE comprometida, la versión antigua (e índice) de una transacción de UPDATE insertada (e índice) de una transacción de INSERT removida, la nueva versión (e índice) de una transacción de UPDATE y la tupla (e índice) de una transacción de COPY.
- VACUUM FREEZE: Evita la avería del sistema causada por la envoltura de ID de transacción. Convierte los ID de transacción más pequeños que OldestXmin para congelar xids, actualizar relfrozenxids en una tabla y actualizar relfrozenxids y truncar obstrucciones en una base de datos.
- Actualizar estadísticas: VACUUM ANALYZE actualiza las estadísticas, lo que permite al optimizador seleccionar una mejor manera de ejecutar sentencias SQL.
La instrucción de VACUUM incluye VACUUM y VACUUM FULL. Actualmente, el VACUUM solo puede funcionar en tablas de almacén de filas. VACUUM FULL se puede utilizar para liberar espacio de las tablas de almacén de columnas. Para más detalles, consulte la siguiente tabla.
Elemento |
VACUUM |
VACUUM FULL |
---|---|---|
Despejando el espacio |
Si el registro eliminado está al final de una tabla, el espacio ocupado por el registro eliminado se libera físicamente y se devuelve al sistema operativo. Si los datos no están al final de una tabla, el espacio ocupado por las tuplas muertas en la tabla o índice se establece para que esté disponible para su reutilización. |
A pesar de la posición de los datos eliminados, el espacio ocupado por los datos se libera físicamente y se devuelve al sistema operativo. Cuando se insertan datos, se asigna una nueva página de disco. |
Tipo de bloqueo |
Bloqueo compartido. La operación VACUUM se puede realizar en paralelo con otras operaciones. |
Bloqueo exclusivo. Todas las operaciones basadas en la tabla se suspenden durante la ejecución. |
Espacio físico |
No lanzado |
Lanzado |
ID de transacción |
No reclamado |
Reciclado |
Gastos generales de ejecución |
La sobrecarga es baja y la operación se puede ejecutar periódicamente. |
La sobrecarga es alta. Se recomienda realizarlo cuando el espacio de la página de disco ocupado por la base de datos está cerca del umbral y las operaciones de datos son pocas. |
Efecto |
Mejora la eficiencia de las operaciones sobre la tabla. |
Mejora en gran medida la eficiencia de las operaciones sobre la tabla. |