Desconexión y conexión de particiones
Utilice ATTACH PARTITION y DETACH PARTITION para incorporar y retirar particiones sin bloquear las lecturas.
Desconexión y conexión de particiones es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 3 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.
¿Por qué desacoplar?
Puede retirar una partición antigua de la tabla activa sin eliminar los datos. Usos habituales:
- Archivar en una base de datos independiente
- Mover a un almacenamiento más económico
- Seguir el patrón de hacer una copia de seguridad y después eliminar
DETACH PARTITION
Retira la partición de la tabla padre, pero conserva los datos:
ALTER TABLE events DETACH PARTITION events_2022;
-- events_2022 is now a standalone table.
-- Queries on events no longer see those rows.DETACH CONCURRENTLY (PG 14+)
Evita el bloqueo ACCESS EXCLUSIVE:
ALTER TABLE events DETACH PARTITION events_2022 CONCURRENTLY;
-- Two-step: detach pending, then finalize. App writes continue.Archivado de particiones desacopladas
Después de desacoplarla:
-- Backup with pg_dump:
pg_dump --table=events_2022 mydb > events_2022.sql
-- Move to a cold-storage Postgres or S3:
psql cold_db < events_2022.sql
-- Then drop from primary:
DROP TABLE events_2022;ATTACH PARTITION
Agrega una tabla existente como una nueva partición:
CREATE TABLE events_2025 (LIKE events INCLUDING ALL);
-- Load data with COPY or INSERT ... SELECT
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');Validación durante ATTACH
ATTACH analiza la nueva partición para confirmar que cada fila cumple los límites de FOR VALUES. Evite el análisis creando una restricción CHECK coincidente antes de asociarla:
ALTER TABLE events_2025
ADD CONSTRAINT events_2025_ts_check
CHECK (ts >= '2025-01-01' AND ts < '2026-01-01');
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');
-- No scan needed; PG trusts the CHECK.Ventanas de tiempo móviles
Avance semanal o mensualmente: cree de antemano la siguiente partición y elimine la más antigua:
BEGIN;
CREATE TABLE events_2024_q4 PARTITION OF events FOR VALUES FROM ('2024-10-01') TO ('2025-01-01');
DROP TABLE events_2023_q4;
COMMIT;Cambio de niveles de almacenamiento
Desacople una partición, ejecute ALTER TABLE … SET TABLESPACE para moverla a un almacenamiento más lento y vuelva a asociarla:
ALTER TABLE events DETACH PARTITION events_2022;
ALTER TABLE events_2022 SET TABLESPACE archive_disk;
ALTER TABLE events ATTACH PARTITION events_2022 FOR VALUES FROM ('2022-01-01') TO ('2023-01-01');Índices en particiones asociadas
Para asociar una partición, sus índices deben coincidir con los de la tabla padre. PG puede crear automáticamente los índices que falten durante ATTACH en PG 14 y versiones posteriores.
Intercambio atómico de particiones
Incluya DETACH y ATTACH en una transacción para intercambiar atómicamente el contenido de una partición. Es un patrón habitual para «crear la nueva partición sin conexión y después reemplazarla»:
BEGIN;
ALTER TABLE events DETACH PARTITION events_2024_q1;
ALTER TABLE events ATTACH PARTITION events_2024_q1_new
FOR VALUES FROM ...;
COMMIT;Rendimiento
DETACH y ATTACH son operaciones de catálogo: son instantáneas cuando las restricciones ya están configuradas. El método de la restricción CHECK es esencial a gran escala.
Resumen
Desacoplar y asociar particiones es el arma secreta del particionamiento para el mantenimiento en línea.
- DETACH PARTITION CONCURRENTLY para retirar particiones en línea
- La restricción CHECK previa a ATTACH omite el análisis de validación
- Intercambiar, archivar y cambiar de nivel de almacenamiento
- Operación atómica con BEGIN/COMMIT
Comprobación rápida
¿Cómo evita el análisis de toda la tabla al ejecutar ATTACH PARTITION?
Aprende SQL 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
- 46
- Lecciones
- 183
Preguntas frecuentes
¿La lección «Desconexión y conexión de particiones» es gratis?
Sí — el texto completo de «Desconexión y conexión de particiones» 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 «Desconexión y conexión de particiones»?
Utilice ATTACH PARTITION y DETACH PARTITION para incorporar y retirar particiones sin bloquear las lecturas. 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 3 de 4.
¿Cuánto tiempo toma la lección «Desconexión y conexión de particiones»?
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