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

> Documentação do motor de tabela TinyLog

# Motor de tabela TinyLog

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>
            Sem suporte no ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

O motor pertence à família de motores de log. Consulte [Família de motores Log](/docs/pt-BR/reference/engines/table-engines/log-family/index) para conhecer as propriedades comuns dos motores de log e suas diferenças.

Esse motor de tabela normalmente é usado com o método de gravação única: grave os dados uma vez e depois leia-os quantas vezes forem necessárias. Por exemplo, você pode usar tabelas do tipo `TinyLog` para dados intermediários processados em pequenos lotes. Observe que armazenar dados em um grande número de tabelas pequenas é ineficiente.

As consultas são executadas em um fluxo único. Em outras palavras, este motor é indicado para tabelas relativamente pequenas (até cerca de 1.000.000 de linhas). Faz sentido usar este motor de tabela se você tiver muitas tabelas pequenas, pois ele é mais simples do que o motor [Log](/docs/pt-BR/reference/engines/table-engines/log-family/log) (menos arquivos precisam ser abertos).

<div id="characteristics">
  ## Características
</div>

* **Estrutura mais simples**: Ao contrário do motor Log, o TinyLog não usa arquivos de marcação. Isso reduz a complexidade, mas também limita as otimizações de desempenho para conjuntos de dados grandes.
* **Consultas em fluxo único**: As consultas em tabelas TinyLog são executadas em um fluxo único, o que o torna adequado para tabelas relativamente pequenas, normalmente com até 1.000.000 de linhas.
* **Eficiente para tabelas pequenas**: A simplicidade do motor TinyLog o torna vantajoso ao gerenciar muitas tabelas pequenas, pois exige menos operações de arquivo em comparação com o motor Log.

Ao contrário do motor Log, o TinyLog não usa arquivos de marcação. Isso reduz a complexidade, mas também limita as otimizações de desempenho para conjuntos de dados maiores.

<div id="table_engines-tinylog-creating-a-table">
  ## Criando uma tabela
</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 = TinyLog
```

Consulte a descrição detalhada da instrução [CREATE TABLE](/docs/pt-BR/reference/statements/create/table).

<div id="table_engines-tinylog-writing-the-data">
  ## Escrevendo os dados
</div>

O motor `TinyLog` armazena todas as colunas em um único arquivo. Para cada consulta `INSERT`, o ClickHouse anexa o bloco de dados ao final de um arquivo de tabela, gravando as colunas uma a uma.

Para cada tabela, o ClickHouse grava os arquivos:

* `<column>.bin`: um arquivo de dados para cada coluna, contendo os dados serializados e comprimidos.

O motor `TinyLog` não oferece suporte às operações `ALTER UPDATE` e `ALTER DELETE`.

<div id="table_engines-tinylog-example-of-use">
  ## Exemplo de uso
</div>

Criando uma tabela:

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

Inserção de dados:

```sql theme={null}
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 duas consultas `INSERT` para criar dois blocos de dados dentro dos arquivos `<column>.bin`.

O ClickHouse usa um único fluxo para selecionar os dados. Como resultado, a ordem dos blocos de linhas na saída corresponde à ordem desses mesmos blocos na entrada. Por exemplo:

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

```text theme={null}
┌───────────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  │
└─────────────────────┴──────────────┴────────────────────────────┘
```
