> ## 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.

> Documentation de Log

# Moteur de table 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>
            Non pris en charge par ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

Ce moteur appartient à la famille des moteurs `Log`. Consultez l’article [Famille de moteurs Log](/docs/fr/reference/engines/table-engines/log-family/index) pour connaître les propriétés communes des moteurs `Log` ainsi que leurs différences.

`Log` diffère de [TinyLog](/docs/fr/reference/engines/table-engines/log-family/tinylog) par la présence d’un petit fichier de « marks » avec les fichiers de colonnes. Ces marks sont écrites pour chaque bloc de données et contiennent des offsets indiquant à partir de quel emplacement commencer la lecture du fichier afin d’ignorer le nombre de lignes spécifié. Cela permet de lire les données de la table à l’aide de plusieurs threads.
En cas d’accès concurrent aux données, les opérations de lecture peuvent être effectuées simultanément, tandis que les opérations d’écriture bloquent les lectures ainsi que les autres écritures.
Le moteur `Log` ne prend pas en charge les index. De même, si l’écriture dans une table échoue, la table est corrompue et sa lecture renvoie une erreur. Le moteur `Log` convient aux données temporaires, aux tables écrites une seule fois, ainsi qu’aux tests ou aux démonstrations.

<div id="table_engines-log-creating-a-table">
  ## Créer une table
</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
```

Consultez la description détaillée de l’instruction [CREATE TABLE](/docs/fr/reference/statements/create/table).

<div id="table_engines-log-writing-the-data">
  ## Écriture des données
</div>

Le moteur `Log` stocke efficacement les données en écrivant chaque colonne dans son propre fichier. Pour chaque table, le moteur `Log` écrit les fichiers suivants dans l’emplacement de stockage spécifié :

* `<column>.bin` : un fichier de données pour chaque colonne, contenant les données sérialisées et compressées.
  `__marks.mrk` : un fichier de marks, qui stocke les offsets et le nombre de lignes pour chaque bloc de données inséré. Les marks facilitent l’exécution efficace des requêtes en permettant au moteur d’ignorer les blocs de données non pertinents lors de la lecture.

<div id="writing-process">
  ### Processus d’écriture
</div>

Lorsque des données sont écrites dans une table `Log` :

1. Les données sont sérialisées et compressées en blocs.
2. Pour chaque colonne, les données compressées sont ajoutées à la fin du fichier `<column>.bin` correspondant.
3. Les entrées correspondantes sont ajoutées au fichier `__marks.mrk` afin d’enregistrer l’offset et le nombre de lignes des données nouvellement insérées.

<div id="table_engines-log-reading-the-data">
  ## Lecture des données
</div>

Le fichier de marks permet à ClickHouse de paralléliser la lecture des données. Cela signifie qu'une requête `SELECT` renvoie des lignes dans un ordre imprévisible. Utilisez la clause `ORDER BY` pour trier les lignes.

<div id="table_engines-log-example-of-use">
  ## Exemple d’utilisation
</div>

Création d’une table :

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

Insertion de données :

```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')
```

Nous avons utilisé deux requêtes `INSERT` pour créer deux blocs de données dans les fichiers `<column>.bin`.

ClickHouse utilise plusieurs threads lors de la lecture des données. Chaque thread lit un bloc de données distinct et renvoie les lignes obtenues indépendamment, dès qu'il a terminé. Par conséquent, l'ordre des blocs de lignes dans la sortie peut ne pas correspondre à celui de ces mêmes blocs dans l'entrée. Par exemple :

```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 │
└─────────────────────┴──────────────┴───────────────────────────┘
```

Tri des résultats (par ordre croissant par défaut) :

```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  │
└─────────────────────┴──────────────┴────────────────────────────┘
```
