Saltar al contenido principal
Están disponibles las siguientes operaciones con particiones:

DETACH PARTITION|PART

Mueve todos los datos de la partición especificada al directorio detached. El servidor deja de reconocer la partición de datos desacoplada como si no existiera. El servidor no volverá a reconocer estos datos hasta que ejecutes la consulta ATTACH. Ejemplo:
Consulte cómo establecer la expresión de partición en la sección Cómo establecer la expresión de partición. Una vez ejecutada la consulta, puede hacer lo que quiera con los datos del directorio detached: eliminarlos del sistema de archivos o simplemente dejarlos allí. Esta consulta se replica: mueve los datos al directorio detached en todas las réplicas. Tenga en cuenta que solo puede ejecutar esta consulta en una réplica líder. Para comprobar si una réplica es líder, ejecute la consulta SELECT sobre la tabla system.replicas. Como alternativa, es más fácil ejecutar una consulta DETACH en todas las réplicas: todas las réplicas lanzan una excepción, excepto las réplicas líderes (ya que se permiten varios líderes).

DROP PARTITION|PART

Elimina la partición especificada de la tabla. Esta consulta marca la partición como inactiva y elimina los datos por completo en aproximadamente 10 minutos. Consulte cómo establecer la expresión de partición en la sección Cómo establecer la expresión de partición. La consulta se replica; elimina los datos en todas las réplicas. Ejemplo:

DROP DETACHED PARTITION|PART

Elimina la parte especificada o todas las partes de la partición especificada de detached. Obtenga más información sobre cómo establecer la expresión de partición en la sección Cómo establecer la expresión de partición.

FORGET PARTITION

Elimina todos los metadatos de una partición vacía de ZooKeeper. La consulta falla si la partición no está vacía o no existe. Asegúrese de ejecutarlo solo para particiones que no vayan a volver a usarse nunca. Consulte cómo establecer la expresión de la partición en la sección establecer la expresión de partición. Ejemplo:

ATTACH PARTITION|PART

Añade datos a la tabla desde el directorio detached. Es posible añadir datos de una partición completa o de una parte individual. Ejemplos:
Lea más sobre establecer la expresión de partición en la sección establecer la expresión de partición. Esta consulta se replica. La réplica iniciadora comprueba si hay datos en el directorio detached. Si existen datos, la consulta verifica su integridad. Si todo es correcto, la consulta añade los datos a la tabla. Si la réplica no iniciadora que recibe el comando ATTACH encuentra la parte con las sumas de comprobación correctas en su propio directorio detached, adjunta los datos sin descargarlos de otras réplicas. Si no hay ninguna parte con las sumas de comprobación correctas, los datos se descargan desde cualquier réplica que tenga la parte. Puede colocar datos en el directorio detached de una réplica y usar la consulta ALTER ... ATTACH para añadirlos a la tabla en todas las réplicas.

ATTACH PARTITION FROM

Esta consulta copia la partición de datos de table1 a table2. Tenga en cuenta que:
  • Los datos no se eliminarán ni de table1 ni de table2.
  • table1 puede ser una tabla temporal.
Para que la consulta se ejecute correctamente, deben cumplirse las siguientes condiciones:
  • Ambas tablas deben tener la misma estructura.
  • Ambas tablas deben tener la misma clave de partición, la misma clave de ORDER BY y la misma clave primaria.
  • Ambas tablas deben tener la misma política de almacenamiento.
  • La tabla de destino debe incluir todos los índices y las proyecciones de la tabla de origen. Si la configuración enforce_index_structure_match_on_partition_manipulation está habilitada en la tabla de destino, los índices y las proyecciones deben ser idénticos. En caso contrario, la tabla de destino puede tener un superconjunto de los índices y las proyecciones de la tabla de origen.

REPLACE PARTITION

Esta consulta copia la partición de datos de table1 a table2 y reemplaza la partición existente en table2. La operación es atómica. Tenga en cuenta que:
  • No se eliminarán datos de table1.
  • table1 puede ser una tabla temporal.
Para que la consulta se ejecute correctamente, deben cumplirse las siguientes condiciones:
  • Ambas tablas deben tener la misma estructura.
  • Ambas tablas deben tener la misma clave de partición, la misma clave de ORDER BY y la misma clave primaria.
  • Ambas tablas deben tener la misma política de almacenamiento.
  • La tabla de destino debe incluir todos los índices y las proyecciones de la tabla de origen. Si la opción enforce_index_structure_match_on_partition_manipulation está habilitada en la tabla de destino, los índices y las proyecciones deben ser idénticos. De lo contrario, la tabla de destino puede tener un superconjunto de los índices y las proyecciones de la tabla de origen.

MOVE PARTITION TO TABLE

Esta consulta mueve la partición de datos de table_source a table_dest y elimina los datos de table_source. Para que la consulta se ejecute correctamente, deben cumplirse las siguientes condiciones:
  • Ambas tablas deben tener la misma estructura.
  • Ambas tablas deben tener la misma clave de partición, la misma clave de ORDER BY y la misma clave primaria.
  • Ambas tablas deben tener la misma política de almacenamiento.
  • Ambas tablas deben pertenecer a la misma familia de motores (replicated o non-replicated).
  • La tabla de destino debe incluir todos los índices y proyecciones de la tabla de origen. Si la configuración enforce_index_structure_match_on_partition_manipulation está habilitada en la tabla de destino, los índices y las proyecciones deben ser idénticos. De lo contrario, la tabla de destino puede tener un superconjunto de los índices y proyecciones de la tabla de origen.

CLEAR COLUMN IN PARTITION

Restablece todos los valores de la columna especificada en una partición. Si la cláusula DEFAULT se definió al crear la tabla, esta consulta establece el valor de la columna en el valor predeterminado especificado. Ejemplo:

FREEZE PARTITION

Esta consulta crea una copia de seguridad local de una partición especificada. Si se omite la cláusula PARTITION, la consulta crea la copia de seguridad de todas las particiones de una sola vez.
Todo el proceso de copia de seguridad se realiza sin detener el servidor.
Tenga en cuenta que, para las tablas antiguas, puede especificar el prefijo del nombre de la partición (por ejemplo, 2019); en ese caso, la consulta crea la copia de seguridad de todas las particiones correspondientes. Puede leer cómo establecer la expresión de partición en la sección Cómo establecer la expresión de partición. En el momento de la ejecución, para crear una instantánea de los datos, la consulta crea enlaces físicos a los datos de la tabla. Los enlaces físicos se colocan en el directorio /var/lib/clickhouse/shadow/N/..., donde:
  • /var/lib/clickhouse/ es el directorio de trabajo de ClickHouse especificado en la configuración.
  • N es el número incremental de la copia de seguridad.
  • si se especifica el parámetro WITH NAME, se usa el valor del parámetro 'backup_name' en lugar del número incremental.
Si utiliza un conjunto de discos para almacenar datos en una tabla, el directorio shadow/N aparece en cada disco y almacena las partes de datos que coinciden con la expresión PARTITION.
Dentro de la copia de seguridad se crea la misma estructura de directorios que en /var/lib/clickhouse/. La consulta ejecuta chmod en todos los archivos para impedir la escritura en ellos. Después de crear la copia de seguridad, puede copiar los datos de /var/lib/clickhouse/shadow/ al servidor remoto y luego eliminarlos del servidor local. Tenga en cuenta que la consulta ALTER t FREEZE PARTITION no se replica. Crea una copia de seguridad local solo en el servidor local. La consulta crea la copia de seguridad casi al instante (aunque primero espera a que finalicen las consultas actuales sobre la tabla correspondiente). ALTER TABLE t FREEZE PARTITION copia solo los datos, no los metadatos de la tabla. Para hacer una copia de seguridad de los metadatos de la tabla, copie el archivo /var/lib/clickhouse/metadata/database/table.sql Para restaurar datos desde una copia de seguridad, haga lo siguiente:
  1. Cree la tabla si no existe. Para ver la consulta, use el archivo .sql (reemplace ATTACH por CREATE).
  2. Copie los datos del directorio data/database/table/ dentro de la copia de seguridad al directorio /var/lib/clickhouse/data/database/table/detached/.
  3. Ejecute consultas ALTER TABLE t ATTACH PARTITION para agregar los datos a la tabla.
Restaurar desde una copia de seguridad no requiere detener el servidor. La consulta procesa las partes en paralelo; el número de hilos se controla mediante la configuración max_threads. Para obtener más información sobre las copias de seguridad y la restauración de datos, consulte la sección “Copia de seguridad y restauración en ClickHouse”.

UNFREEZE PARTITION

Elimina del disco las particiones frozen con el nombre especificado. Si se omite la cláusula PARTITION, la consulta elimina la copia de seguridad de todas las particiones a la vez.

CLEAR INDEX IN PARTITION

La consulta funciona de manera similar a CLEAR COLUMN, pero restablece un índice en lugar de los datos de una columna.

FETCH PARTITION|PART

Descarga una partición de otro servidor. Esta consulta solo funciona para las tablas replicadas. La consulta hace lo siguiente:
  1. Descarga la partición|part del segmento especificado. En ‘path-in-zookeeper’, debe especificar la ruta al segmento en ZooKeeper.
  2. A continuación, la consulta coloca los datos descargados en el directorio detached de la tabla table_name. Use la consulta ATTACH PARTITION|PART para agregar los datos a la tabla.
Por ejemplo:
  1. FETCH PARTITION
  1. FETCH PART
Ten en cuenta que:
  • La consulta ALTER ... FETCH PARTITION|PART no se replica. Coloca la parte o partición en el directorio detached únicamente en el servidor local.
  • La consulta ALTER TABLE ... ATTACH sí se replica. Agrega los datos a todas las réplicas. Los datos se agregan a una de las réplicas desde el directorio detached y a las demás, desde réplicas vecinas.
Antes de descargar los datos, el sistema comprueba si la partición existe y si la estructura de la tabla coincide. La réplica más adecuada se selecciona automáticamente entre las réplicas en buen estado. Aunque la consulta se llama ALTER TABLE, no cambia la estructura de la tabla ni modifica de inmediato los datos disponibles en ella.

MOVE PARTITION|PART

Mueve particiones o partes de datos a otro volumen o disco en tablas con motor MergeTree. Consulte Uso de varios dispositivos de bloque para el almacenamiento de datos.
La consulta ALTER TABLE t MOVE:
  • No se replica, porque distintas réplicas pueden tener políticas de almacenamiento diferentes.
  • Devuelve un error si el disco o volumen especificado no está configurado. La consulta también devuelve un error si no pueden aplicarse las condiciones de movimiento de datos especificadas en la política de almacenamiento.
  • Puede devolver un error cuando los datos que se van a mover ya han sido movidos por un proceso en segundo plano, por una consulta ALTER TABLE t MOVE concurrente o como resultado de la fusión de datos en segundo plano. En este caso, el usuario no debe realizar ninguna acción adicional.
Ejemplo:

UPDATE IN PARTITION

Manipula los datos de la partición especificada que coinciden con la expresión de filtrado indicada. Se implementa como una mutación. Sintaxis:

Ejemplo

Véase también

DELETE IN PARTITION

Elimina los datos de la partición especificada que coinciden con la expresión de filtrado indicada. Se implementa como una mutación. Sintaxis:

Ejemplo

REWRITE PARTS

Esto reescribirá las partes desde cero con todos los ajustes nuevos. Tiene sentido, ya que los ajustes a nivel de tabla, como use_const_adaptive_granularity, de forma predeterminada solo se aplican a las partes recién escritas.

Ejemplo

Véase también

Establecer la expresión de partición

Puede especificar la expresión de partición en las consultas ALTER ... PARTITION de distintas formas:
  • Como un valor de la columna partition de la tabla system.parts. Por ejemplo, ALTER TABLE visits DETACH PARTITION 201901.
  • Usando la palabra clave ALL. Solo puede usarse con DROP/DETACH/ATTACH/ATTACH FROM. Por ejemplo, ALTER TABLE visits ATTACH PARTITION ALL.
  • Como una tupla de expresiones o constantes que coincida (en tipos) con la tupla de claves de particionamiento de la tabla. En el caso de una clave de particionamiento de un solo elemento, la expresión debe envolverse en la función tuple (...). Por ejemplo, ALTER TABLE visits DETACH PARTITION tuple(toYYYYMM(toDate('2019-01-25'))).
  • Usando el ID de la partición. El ID de la partición es un identificador de cadena de la partición (legible para las personas, si es posible) que se usa como nombre de las particiones en el sistema de archivos y en ZooKeeper. El ID de la partición debe especificarse en la cláusula PARTITION ID, entre comillas simples. Por ejemplo, ALTER TABLE visits DETACH PARTITION ID '201901'.
  • En las consultas ALTER ATTACH PART y DROP DETACHED PART, para especificar el nombre de una parte, use un literal de cadena con un valor de la columna name de la tabla system.detached_parts. Por ejemplo, ALTER TABLE visits ATTACH PART '201901_1_1_0'.
El uso de comillas al especificar la partición depende del tipo de expresión de partición. Por ejemplo, para el tipo String, debe especificar su nombre entre comillas ('). Para los tipos Date e Int*, no se necesitan comillas. Todas las reglas anteriores también se aplican a la consulta OPTIMIZE. Si necesita especificar la única partición al optimizar una tabla no particionada, establezca la expresión PARTITION tuple(). Por ejemplo:
IN PARTITION especifica la partición a la que se aplican las expresiones UPDATE o DELETE en la consulta ALTER TABLE. Solo se crean nuevas partes a partir de la partición especificada. De este modo, IN PARTITION ayuda a reducir la carga cuando la tabla está dividida en muchas particiones y solo necesita actualizar los datos de forma puntual. Los ejemplos de consultas ALTER ... PARTITION se muestran en las pruebas 00502_custom_partitioning_local y 00502_custom_partitioning_replicated_zookeeper.
Última modificación el 2 de julio de 2026