- DETACH PARTITION|PART — Mueve una partición o una parte al directorio
detachedy la desvincula. - DROP PARTITION|PART — Elimina una partición o una parte.
- DROP DETACHED PARTITION|PART - Elimina una parte o todas las partes de una partición de
detached. - FORGET PARTITION — Elimina los metadatos de una partición de ZooKeeper si está vacía.
- ATTACH PARTITION|PART — Añade a la tabla una partición o una parte desde el directorio
detached. - ATTACH PARTITION FROM — Copia la partición de datos de una tabla a otra y la añade.
- REPLACE PARTITION — Copia la partición de datos de una tabla a otra y la reemplaza.
- MOVE PARTITION TO TABLE — Mueve la partición de datos de una tabla a otra.
- CLEAR COLUMN IN PARTITION — Restablece el valor de una columna especificada en una partición.
- CLEAR INDEX IN PARTITION — Restablece el índice secundario especificado en una partición.
- FREEZE PARTITION — Crea una copia de seguridad de una partición.
- UNFREEZE PARTITION — Elimina una copia de seguridad de una partición.
- FETCH PARTITION|PART — Descarga una parte o una partición desde otro servidor.
- MOVE PARTITION|PART — Mueve una partición o parte de datos a otro disco o volumen.
- UPDATE IN PARTITION — Actualiza los datos dentro de la partición según una condición.
- DELETE IN PARTITION — Elimina los datos dentro de la partición según una condición.
- REWRITE PARTS — Reescribe por completo las partes de la tabla (o de una partición específica).
DETACH PARTITION|PART
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:
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
DROP DETACHED PARTITION|PART
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
ATTACH PARTITION|PART
detached. Es posible añadir datos de una partición completa o de una parte individual. Ejemplos:
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
table1 a table2.
Tenga en cuenta que:
- Los datos no se eliminarán ni de
table1ni detable2. table1puede ser una tabla temporal.
- 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_manipulationestá 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
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. table1puede ser una tabla temporal.
- 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_manipulationestá 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
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_manipulationestá 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
DEFAULT se definió al crear la tabla, esta consulta establece el valor de la columna en el valor predeterminado especificado.
Ejemplo:
FREEZE PARTITION
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.
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.Nes 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./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:
- Cree la tabla si no existe. Para ver la consulta, use el archivo .sql (reemplace
ATTACHporCREATE). - Copie los datos del directorio
data/database/table/dentro de la copia de seguridad al directorio/var/lib/clickhouse/data/database/table/detached/. - Ejecute consultas
ALTER TABLE t ATTACH PARTITIONpara agregar los datos a la tabla.
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
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
CLEAR COLUMN, pero restablece un índice en lugar de los datos de una columna.
FETCH PARTITION|PART
- Descarga la partición|part del segmento especificado. En ‘path-in-zookeeper’, debe especificar la ruta al segmento en ZooKeeper.
- A continuación, la consulta coloca los datos descargados en el directorio
detachedde la tablatable_name. Use la consulta ATTACH PARTITION|PART para agregar los datos a la tabla.
- FETCH PARTITION
- FETCH PART
- La
consulta ALTER ... FETCH PARTITION|PARTno se replica. Coloca la parte o partición en el directoriodetachedúnicamente en el servidor local. - La
consulta ALTER TABLE ... ATTACHsí se replica. Agrega los datos a todas las réplicas. Los datos se agregan a una de las réplicas desde el directoriodetachedy a las demás, desde réplicas vecinas.
ALTER TABLE, no cambia la estructura de la tabla ni modifica de inmediato los datos disponibles en ella.
MOVE PARTITION|PART
MergeTree. Consulte Uso de varios dispositivos de bloque para el almacenamiento de datos.
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 MOVEconcurrente o como resultado de la fusión de datos en segundo plano. En este caso, el usuario no debe realizar ninguna acción adicional.
UPDATE IN PARTITION
Ejemplo
Véase también
DELETE IN PARTITION
Ejemplo
REWRITE PARTS
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
ALTER ... PARTITION de distintas formas:
- Como un valor de la columna
partitionde la tablasystem.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
namede la tabla system.detached_parts. Por ejemplo,ALTER TABLE visits ATTACH PART '201901_1_1_0'.
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.