El motor pertenece a la familia de motores Log. Consulte las propiedades comunes de los motores Log y sus diferencias en el artículo Familia de motores Log.
Log se diferencia de TinyLog en que mantiene un pequeño archivo de “marcas” junto a los archivos de columna. Estas marcas se escriben en cada bloque de datos y contienen desplazamientos que indican dónde empezar a leer el archivo para omitir el número especificado de filas. Esto permite leer los datos de la tabla en varios hilos.
Para el acceso concurrente a los datos, las operaciones de lectura pueden realizarse simultáneamente, mientras que las operaciones de escritura bloquean tanto las lecturas como otras escrituras.
El motor Log no admite índices. Del mismo modo, si falla una escritura en la tabla, la tabla queda dañada y al leerla se devuelve un error. El motor Log es adecuado para datos temporales, tablas de escritura única y pruebas o fines de demostración.
Consulte la descripción detallada de la consulta CREATE TABLE.
El motor Log almacena los datos de forma eficiente escribiendo cada columna en su propio archivo. Para cada tabla, el motor Log escribe los siguientes archivos en la ruta de almacenamiento especificada:
<column>.bin: Un archivo de datos para cada columna, que contiene los datos serializados y comprimidos.
__marks.mrk: Un archivo de marcas que almacena desplazamientos y recuentos de filas para cada bloque de datos insertado. Las marcas se utilizan para facilitar una ejecución eficiente de las consultas, ya que permiten que el motor omita bloques de datos irrelevantes durante las lecturas.
Cuando se escriben datos en una tabla Log:
- Los datos se serializan y se comprimen en bloques.
- Para cada columna, los datos comprimidos se añaden a su archivo
<column>.bin correspondiente.
- Se añaden las entradas correspondientes al archivo
__marks.mrk para registrar el desplazamiento y el número de filas de los datos recién insertados.
El archivo de marcas permite a ClickHouse paralelizar la lectura de los datos. Esto significa que una consulta SELECT devuelve las filas en un orden impredecible. Use la cláusula ORDER BY para ordenar las filas.
Creación de una tabla:
Inserción de datos:
Usamos dos consultas INSERT para crear dos bloques de datos dentro de los archivos <column>.bin.
ClickHouse usa varios hilos al seleccionar datos. Cada hilo lee un bloque de datos distinto y devuelve las filas resultantes de forma independiente a medida que finaliza. Como resultado, el orden de los bloques de filas en la salida puede no coincidir con el orden de esos mismos bloques en la entrada. Por ejemplo:
Ordenación de los resultados (en orden ascendente de forma predeterminada):
Última modificación el 2 de julio de 2026