Por qué particionar: poda y mantenimiento
Comprenda las ventajas de particionar: poda de consultas, VACUUM más rápido y archivado más sencillo.
Por qué particionar: poda y mantenimiento es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 1 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 SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué es el particionamiento?
Dividir una tabla lógica en varias tablas físicas (particiones), cada una con un subconjunto de filas. Las consultas solo recorren las particiones relevantes.
¿Por qué hacerlo?
Las tablas grandes ocasionan problemas:
- Los índices crecen mucho y las búsquedas se vuelven más lentas
- VACUUM tarda horas
- Las copias de seguridad son lentas
- Algunas consultas recorren datos innecesariamente
El particionamiento aborda los cuatro problemas.
Poda de particiones
El planificador puede OMITIR las particiones que no pueden coincidir con una cláusula WHERE:
EXPLAIN SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Only March partition scanned; older partitions skipped.
-- Plan rows: 1M, not 100B.Cuándo particionar
Particione cuando:
- La tabla se encuentre en el rango de 100 GB o más
- Disponga de una clave de particionamiento natural (fecha, inquilino o región)
- La mayoría de las consultas filtren por esa clave
- Los datos antiguos se puedan archivar o eliminar
Cuándo NO particionar
No particione solo porque parezca interesante:
- Las tablas de menos de unos pocos GB no obtienen beneficios
- Si las consultas no filtran por la clave de particionamiento, NO habrá poda
- Añade complejidad operativa (gestión de las particiones)
Estrategias de particionamiento
PostgreSQL admite tres:
- Rango: las particiones abarcan rangos de valores (fechas o identificadores)
- Lista: las particiones contienen valores específicos (países o inquilinos)
- Hash: hashing modular para lograr una distribución uniforme
Eliminación rápida
Eliminar una partición es instantáneo: no es necesario borrar las filas una por una:
DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.Mantenimiento más sencillo
VACUUM, REINDEX y ANALYZE operan por partición. Las ventanas de mantenimiento se pueden distribuir entre particiones en lugar de requerir un único lote enorme.
Índices más pequeños por partición
Cada partición tiene sus propios índices. Un B-tree en una partición de 1 GB tiene menos niveles que en una de 1 TB, por lo que las búsquedas son más rápidas.
El particionamiento es una herramienta, no una solución mágica
No obtiene rendimiento gratis: obtiene poda para las consultas que filtran por la clave de particionamiento y un mantenimiento más sencillo. Si esas condiciones no se cumplen, solo añadirá complejidad.
Particionamiento nativo (declarativo) de PostgreSQL
Disponible desde PG 10. Cada partición es una tabla real:
CREATE TABLE events (
id BIGSERIAL,
ts TIMESTAMPTZ NOT NULL,
user_id BIGINT,
data JSONB
) PARTITION BY RANGE (ts);
CREATE TABLE events_2024_01 PARTITION OF events
FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');Antes de PG10: particionamiento mediante herencia
Los sistemas antiguos utilizan herencia de tablas y triggers. Evítelo en código nuevo: el particionamiento declarativo es más sencillo y rápido.
Resumen
El particionamiento resulta especialmente útil en tablas grandes agrupadas por tiempo o segmentadas por inquilino.
- La poda omite las particiones irrelevantes
- El mantenimiento por partición es más rápido
- DROP TABLE sustituye a DELETE de 100 GB
- No es mágico: solo ayuda si las consultas coinciden con la clave de particionamiento
Comprobación rápida
Particiona una tabla por mes y ejecuta SELECT * FROM events WHERE country = 'US' sin ningún filtro de fecha. ¿Ayuda el particionamiento?
Preguntas frecuentes
¿La lección «Por qué particionar: poda y mantenimiento» es gratis?
Sí — el texto completo de «Por qué particionar: poda y mantenimiento» 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 SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Por qué particionar: poda y mantenimiento»?
Comprenda las ventajas de particionar: poda de consultas, VACUUM más rápido y archivado más sencillo. Practicas SQL Academy 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 SQL Academy?
No se requiere experiencia previa. SQL Academy 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 1 de 4.
¿Cuánto tiempo toma la lección «Por qué particionar: poda y mantenimiento»?
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 SQL Academy?
Sí. Cada lección de SQL Academy 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
- Por qué particionar: poda y mantenimiento
- Particionado por rango, lista y hash
- Desconexión y conexión de particiones
- Consultas eficientes entre particiones