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

> Документация по движку таблицы TinyLog

# 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>
            Не поддерживается в ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

Этот движок относится к семейству движков Log. Общие свойства движков этого семейства и различия между ними описаны в разделе [Семейство движков Log](/docs/ru/reference/engines/table-engines/log-family/index).

Этот движок таблицы обычно используется по принципу однократной записи: данные записываются один раз, а затем читаются столько раз, сколько нужно. Например, таблицы типа `TinyLog` можно использовать для промежуточных данных, которые обрабатываются небольшими батчами. Обратите внимание, что хранение данных в большом количестве маленьких таблиц неэффективно.

Запросы выполняются в одном потоке. Иными словами, этот движок предназначен для сравнительно небольших таблиц (примерно до 1 000 000 строк). Его имеет смысл использовать, если у вас много маленьких таблиц, поскольку он проще, чем движок [Log](/docs/ru/reference/engines/table-engines/log-family/log) (требуется открывать меньше файлов).

<div id="characteristics">
  ## Характеристики
</div>

* **Более простая структура**: В отличие от движка Log, TinyLog не использует файлы меток. Это упрощает структуру, но также ограничивает возможности оптимизации производительности для больших наборов данных.
* **Запросы в одном потоке**: Запросы к таблицам TinyLog выполняются в одном потоке, что делает этот движок подходящим для сравнительно небольших таблиц — обычно до 1 000 000 строк.
* **Эффективен для небольших таблиц**: Благодаря простоте движок TinyLog удобен при работе с большим количеством небольших таблиц, так как требует меньше файловых операций по сравнению с движком Log.

В отличие от движка Log, TinyLog не использует файлы меток. Это упрощает структуру, но также ограничивает возможности оптимизации производительности для более крупных наборов данных.

<div id="table_engines-tinylog-creating-a-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 = TinyLog
```

См. подробное описание запроса [CREATE TABLE](/docs/ru/reference/statements/create/table).

<div id="table_engines-tinylog-writing-the-data">
  ## Запись данных
</div>

Движок `TinyLog` хранит все столбцы в одном файле. Для каждого запроса `INSERT` ClickHouse дописывает блок данных в конец файла таблицы, записывая столбцы по одному.

Для каждой таблицы ClickHouse записывает следующие файлы:

* `<column>.bin`: файл данных для каждого столбца, содержащий сериализованные и сжатые данные.

Движок `TinyLog` не поддерживает операции `ALTER UPDATE` и `ALTER DELETE`.

<div id="table_engines-tinylog-example-of-use">
  ## Пример использования
</div>

Создание таблицы:

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

Вставка данных:

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

Мы использовали два запроса `INSERT`, чтобы создать два блока данных в файлах `<column>.bin`.

ClickHouse использует один поток при выборке данных. В результате порядок блоков строк в выходных данных соответствует порядку этих же блоков во входных данных. Например:

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