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

このエンジンは、ログエンジンファミリーに属します。ログエンジンに共通する特性とそれぞれの違いについては、[ログエンジンファミリー](/docs/ja/reference/engines/table-engines/log-family/index)を参照してください。

このテーブルエンジンは通常、1 回だけ書き込む方式で使用されます。つまり、データを 1 度書き込み、その後は必要に応じて何度でも読み取ります。たとえば、`TinyLog` 型のテーブルは、小さなバッチで処理される中間データに使用できます。なお、多数の小さなテーブルにデータを保存するのは非効率です。

クエリは単一ストリームで実行されます。言い換えると、このエンジンは比較的小さなテーブル (最大で約 1,000,000 行) 向けです。多数の小さなテーブルがある場合は、このテーブルエンジンを使用するのが適しています。[Log](/docs/ja/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/ja/reference/statements/create/table) クエリの詳しい説明を参照してください。

<div id="table_engines-tinylog-writing-the-data">
  ## データの書き込み
</div>

`TinyLog` エンジンは、すべてのカラムを 1 つのファイルに保存します。`INSERT` クエリが実行されるたびに、ClickHouse はデータブロックをテーブルファイルの末尾に追記し、カラムを 1 つずつ書き込みます。

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` クエリを 2 つ使用して、`<column>.bin` ファイル内に 2 つのデータブロックを作成しました。

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