SQL Academy · Lección

Desconexión y conexión de particiones

Utilice ATTACH PARTITION y DETACH PARTITION para incorporar y retirar particiones sin bloquear las lecturas.

Lección 3 de 413 pasos

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?

Gratis para empezar

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

  1. Por qué particionar: poda y mantenimiento
  2. Particionado por rango, lista y hash
  3. Desconexión y conexión de particiones
  4. Consultas eficientes entre particiones
← Volver a SQL Academy