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

# Motor de tabela StripeLog

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 />

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

Use este motor em cenários nos quais você precisa gravar muitas tabelas com uma pequena quantidade de dados (menos de 1 milhão de linhas). Por exemplo, esta tabela pode ser usada para armazenar lotes de dados recebidos para transformação quando o processamento atômico deles for necessário. 100 mil instâncias desse tipo de tabela são viáveis em um servidor ClickHouse. Este motor de tabela deve ser preferido em vez de [Log](/docs/pt-BR/reference/engines/table-engines/log-family/log) quando for necessário um grande número de tabelas. Isso ocorre em detrimento da eficiência de leitura.

<div id="table_engines-stripelog-creating-a-table">
  ## Criar 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 = StripeLog
```

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

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

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

Para cada tabela, o ClickHouse grava os arquivos:

* `data.bin` — Arquivo de dados.
* `index.mrk` — Arquivo com marcas. As marcas contêm os offsets de cada coluna de cada bloco de dados inserido.

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

<div id="table_engines-stripelog-reading-the-data">
  ## Lendo os dados
</div>

O arquivo de marcas permite que o ClickHouse paralelize a leitura dos dados. Isso significa que uma consulta `SELECT` retorna linhas em ordem imprevisível. Use a cláusula `ORDER BY` para ordenar as linhas.

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

Criação de uma tabela:

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

Inserção de dados:

```sql theme={null}
INSERT INTO stripe_log_table VALUES (now(),'REGULAR','The first regular message')
INSERT INTO stripe_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 no arquivo `data.bin`.

O ClickHouse usa várias threads ao selecionar dados. Cada thread lê um bloco de dados separado e retorna as linhas resultantes de forma independente, à medida que conclui a leitura. Como resultado, na maioria dos casos, a ordem dos blocos de linhas na saída não corresponde à ordem desses mesmos blocos na entrada. Por exemplo:

```sql theme={null}
SELECT * FROM stripe_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 │
└─────────────────────┴──────────────┴───────────────────────────┘
```

Ordenando os resultados (em ordem crescente por padrão):

```sql theme={null}
SELECT * FROM stripe_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  │
└─────────────────────┴──────────────┴────────────────────────────┘
```
