> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentación de Log

# motor de tablas Log

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            No es compatible con ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

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](/docs/es/reference/engines/table-engines/log-family/index).

`Log` se diferencia de [TinyLog](/docs/es/reference/engines/table-engines/log-family/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.

<div id="table_engines-log-creating-a-table">
  ## Crear una tabla
</div>

```sql theme={null}
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 = Log
```

Consulte la descripción detallada de la consulta [CREATE TABLE](/docs/es/reference/statements/create/table).

<div id="table_engines-log-writing-the-data">
  ## Escritura de los datos
</div>

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.

<div id="writing-process">
  ### Proceso de escritura
</div>

Cuando se escriben datos en una tabla `Log`:

1. Los datos se serializan y se comprimen en bloques.
2. Para cada columna, los datos comprimidos se añaden a su archivo `<column>.bin` correspondiente.
3. 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.

<div id="table_engines-log-reading-the-data">
  ## Lectura de los datos
</div>

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.

<div id="table_engines-log-example-of-use">
  ## Ejemplo de uso
</div>

Creación de una tabla:

```sql theme={null}
CREATE TABLE log_table
(
    timestamp DateTime,
    message_type String,
    message String
)
ENGINE = Log
```

Inserción de datos:

```sql theme={null}
INSERT INTO log_table VALUES (now(),'REGULAR','The first regular message')
INSERT INTO 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 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:

```sql theme={null}
SELECT * FROM log_table
```

```text theme={null}
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
┌───────────timestamp─┬─message_type─┬─message───────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message │
└─────────────────────┴──────────────┴───────────────────────────┘
```

Ordenación de los resultados (en orden ascendente de forma predeterminada):

```sql theme={null}
SELECT * FROM log_table ORDER BY timestamp
```

```text theme={null}
┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR      │ The first regular message  │
│ 2019-01-18 14:27:32 │ REGULAR      │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING      │ The first warning message  │
└─────────────────────┴──────────────┴────────────────────────────┘
```
