Una guía visual para particionar una tabla de 11TB en PostgreSQL usando un enfoque basado en scripts.
De Datos en una Sola Tabla
`dapta_logs_prod.logs_transacciones_api`
Los escaneos secuenciales sobre terabytes de datos degradan el rendimiento drásticamente.
Operaciones como `VACUUM` y `REINDEX` se vuelven lentas, costosas y bloqueantes.
Archivar o eliminar datos antiguos requiere operaciones masivas (`DELETE`) que son lentas y generan fragmentación.
El particionamiento declarativo de PostgreSQL nos permite dividir una tabla grande en piezas más pequeñas y manejables (particiones) basadas en el valor de una columna, como una fecha.
Tabla Monolítica (11 TB)
Jul '23
Ago '23
Sep '23
... etc.
El script de Bash no ejecuta la migración directamente. Su función es actuar como un generador de confianza que, basándose en tu configuración, produce una secuencia de comandos SQL listos para ser ejecutados, minimizando errores manuales.
(Host, Usuario, Tabla, Fechas)
(./generate_partition_sql.sh)
(Archivo con comandos psql)
Antes de detener cualquier servicio, se realizan las verificaciones y preparaciones críticas para asegurar una migración sin sorpresas.
Esta es la fase crítica donde se detienen las aplicaciones y se ejecutan los comandos SQL generados para transformar la tabla.
Se restauran los servicios y comienza la nueva vida de la tabla, con un mantenimiento simplificado y automatizado.
Más allá de resolver el problema inmediato, el particionamiento desbloquea mejoras significativas en rendimiento y gestión, haciendo el sistema más robusto y escalable.
Al filtrar por fecha, PostgreSQL escanea solo las particiones relevantes en lugar de la tabla entera de 11TB. (Datos ilustrativos).
Archivar o eliminar datos antiguos ahora es una operación de metadatos (`DROP TABLE`) casi instantánea en lugar de un `DELETE` masivo. (Datos ilustrativos).