Diagnóstico de la fragmentación y estrategia de VACUUM
Comprenda cómo MVCC genera fragmentación en tablas e índices, cómo medirla y cómo ajustar autovacuum para mantener un alto rendimiento.
Diagnóstico de la fragmentación y estrategia de VACUUM es una lección gratuita de Advanced PostgreSQL: Indexing, Partitioning, Replication en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Advanced PostgreSQL: Indexing, Partitioning, Replication, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Advanced PostgreSQL: Indexing, Partitioning, Replication incluye 4 lecciones en total.
MVCC y las tuplas muertas
PostgreSQL usa MVCC: las actualizaciones y eliminaciones dejan atrás versiones antiguas de las filas llamadas tuplas muertas. Hasta que se limpian, ocupan espacio y ralentizan los análisis. Este espacio desperdiciado es el bloat.
Qué hace VACUUM
VACUUM recupera las tuplas muertas para reutilizarlas y actualiza la información de visibilidad. Normalmente no devuelve espacio al sistema operativo; VACUUM FULL sí lo hace, pero reescribe toda la tabla y adquiere un bloqueo fuerte.
Medición del bloat
Consulte el número de tuplas muertas de cada tabla en la vista de estadísticas.
SELECT relname, n_live_tup, n_dead_tup,
last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC;Conceptos básicos de Autovacuum
Autovacuum se ejecuta en segundo plano y se activa cuando las tuplas muertas superan un umbral basado en el tamaño de la tabla y en el ajuste del factor de escala.
-- trigger ~ threshold + scale_factor * n_live_tup
autovacuum_vacuum_scale_factor = 0.2Ajuste de tablas con mucha actividad
En tablas grandes que se actualizan con frecuencia, el factor de escala predeterminado del 20 % es demasiado permisivo. Redúzcalo por tabla para que vacuum se ejecute más a menudo y con menos basura acumulada.
ALTER TABLE orders SET (
autovacuum_vacuum_scale_factor = 0.02);Limitación de Vacuum
Autovacuum se limita a sí mismo mediante límites de coste para evitar tormentas de E/S. En hardware moderno puede aumentar autovacuum_vacuum_cost_limit para que vacuum termine más rápido.
autovacuum_vacuum_cost_limit = 2000Desbordamiento circular del ID de transacción
VACUUM también evita el desbordamiento circular del ID de transacción, una situación catastrófica. Los procesos de vacuum agresivos contra este desbordamiento son imprescindibles y no se pueden omitir.
SELECT datname, age(datfrozenxid)
FROM pg_database ORDER BY 2 DESC;Bloat de los índices
Los índices también sufren bloat. REINDEX CONCURRENTLY reconstruye un índice sin bloquear las escrituras y recupera su compacidad.
REINDEX INDEX CONCURRENTLY orders_pkey;Actualizaciones HOT
Las actualizaciones de Heap-Only Tuple evitan cambios innecesarios en los índices cuando no cambia ninguna columna indexada. Dejar algo de espacio libre mediante un fillfactor más bajo facilita las actualizaciones HOT y reduce el bloat.
ALTER TABLE orders SET (fillfactor = 90);VACUUM frente a ANALYZE
VACUUM recupera espacio; ANALYZE actualiza las estadísticas del planificador. Autovacuum hace ambas cosas, pero después de grandes cargas masivas ejecute ANALYZE manualmente para obtener planes actualizados.
ANALYZE orders;Un hábito de monitorización
Configure alertas para detectar el aumento de n_dead_tup, el crecimiento del tamaño de la tabla con un número de filas estable y un valor alto de age(datfrozenxid). Estas señales tempranas le permiten ajustar el sistema antes de que las consultas se ralenticen.
Comprobación rápida
Una tabla grande y con mucha actividad sigue creciendo aunque el número de filas se mantenga estable. ¿Cuál es la causa probable y cómo se soluciona?
Resumen
Ha aprendido a diagnosticar el bloat causado por las tuplas muertas de MVCC, medirlo con pg_stat_user_tables, ajustar autovacuum por tabla, prevenir el desbordamiento circular de los ID y usar REINDEX CONCURRENTLY y fillfactor para mantener un alto rendimiento.
Aprende Advanced PostgreSQL: Indexing, Partitioning, Replication con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 11
- Lecciones
- 44
Preguntas frecuentes
¿La lección «Diagnóstico de la fragmentación y estrategia de VACUUM» es gratis?
Sí — el texto completo de «Diagnóstico de la fragmentación y estrategia de VACUUM» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Advanced PostgreSQL: Indexing, Partitioning, Replication, actualiza a CoddyKit PRO. El curso de Advanced PostgreSQL: Indexing, Partitioning, Replication incluye 4 lecciones en total.
¿Qué aprenderé en «Diagnóstico de la fragmentación y estrategia de VACUUM»?
Comprenda cómo MVCC genera fragmentación en tablas e índices, cómo medirla y cómo ajustar autovacuum para mantener un alto rendimiento. Practicas Advanced PostgreSQL: Indexing, Partitioning, Replication con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Advanced PostgreSQL: Indexing, Partitioning, Replication?
No se requiere experiencia previa. Advanced PostgreSQL: Indexing, Partitioning, Replication en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Diagnóstico de la fragmentación y estrategia de VACUUM»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Advanced PostgreSQL: Indexing, Partitioning, Replication?
Sí. Cada lección de Advanced PostgreSQL: Indexing, Partitioning, Replication incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Optimización integral del rendimiento
- Supervisión y alertas avanzadas
- Tendencias futuras de PostgreSQL
- Diagnóstico de la fragmentación y estrategia de VACUUM