Este motor pertenece a la familia de motores Log. Consulte Familia de motores Log para conocer las propiedades comunes de los motores Log y sus diferencias.
Este motor de tabla suele usarse con el método de escritura única: escribir datos una sola vez y luego leerlos tantas veces como sea necesario. Por ejemplo, puede usar tablas de tipo TinyLog para datos intermedios que se procesan en lotes pequeños. Tenga en cuenta que almacenar datos en un gran número de tablas pequeñas es ineficiente.
Las consultas se ejecutan en un único flujo. En otras palabras, este motor está pensado para tablas relativamente pequeñas (hasta aproximadamente 1.000.000 de filas). Tiene sentido usar este motor de tabla si tiene muchas tablas pequeñas, ya que es más sencillo que el motor Log (hay que abrir menos archivos).
Características
- Estructura más sencilla: A diferencia del motor Log, TinyLog no utiliza archivos de marcas. Esto reduce la complejidad, pero también limita las optimizaciones de rendimiento para conjuntos de datos grandes.
- Consultas en un único flujo: Las consultas sobre tablas TinyLog se ejecutan en un único flujo, lo que lo hace adecuado para tablas relativamente pequeñas, normalmente de hasta 1.000.000 de filas.
- Eficiente para tablas pequeñas: La simplicidad del motor TinyLog resulta ventajosa al gestionar muchas tablas pequeñas, ya que requiere menos operaciones de archivo que el motor Log.
A diferencia del motor Log, TinyLog no utiliza archivos de marcas. Esto reduce la complejidad, pero también limita las optimizaciones de rendimiento para conjuntos de datos más grandes.
Crear una tabla
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
column1_name [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
column2_name [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = TinyLogConsulte la descripción detallada de la consulta CREATE TABLE.
Escritura de datos
El motor TinyLog almacena todas las columnas en un solo archivo. Para cada consulta INSERT, ClickHouse agrega el bloque de datos al final del archivo de la tabla y escribe las columnas una por una.
Para cada tabla, ClickHouse escribe los siguientes archivos:
<column>.bin: un archivo de datos para cada columna, que contiene los datos serializados y comprimidos.
El motor TinyLog no admite las operaciones ALTER UPDATE ni ALTER DELETE.
Ejemplo de uso
Creación de una tabla:
CREATE TABLE tiny_log_table
(
timestamp DateTime,
message_type String,
message String
)
ENGINE = TinyLogInserción de datos:
INSERT INTO tiny_log_table VALUES (now(),'REGULAR','The first regular message')
INSERT INTO tiny_log_table VALUES (now(),'REGULAR','The second regular message'),(now(),'WARNING','The first warning message')Usamos dos consultas INSERT para crear dos bloques de datos dentro de los archivos <column>.bin.
ClickHouse usa un único flujo para seleccionar los datos. Como resultado, el orden de los bloques de filas en la salida coincide con el orden de esos mismos bloques en la entrada. Por ejemplo:
SELECT * FROM tiny_log_table┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2024-12-10 13:11:58 │ REGULAR │ The first regular message │
│ 2024-12-10 13:12:12 │ REGULAR │ The second regular message │
│ 2024-12-10 13:12:12 │ WARNING │ The first warning message │
└─────────────────────┴──────────────┴────────────────────────────┘