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

# query_* サーバー設定

> query_* 生成グループに属する ClickHouse サーバー設定。

これらの設定はClickHouse サーバーを設定するためのもので、ClickHouseのソースから自動生成されています。

## query\_cache

[クエリキャッシュ](https://clickhouse.com/docs/ja/concepts/features/performance/caches/query-cache.md)の設定。

使用できる設定は次のとおりです。

| 設定 | 説明 | デフォルト値 |
| - | - | - |
| `max_entries` | cache に保存される `SELECT` クエリ結果の最大数。 | `1024` |
| `max_entry_size_in_bytes` | cache に保存できる `SELECT` クエリ結果の最大サイズ (バイト単位) 。 | `1048576` |
| `max_entry_size_in_rows` | cache に保存できる `SELECT` クエリ結果の最大行数。 | `30000000` |
| `max_size_in_bytes` | cache の最大サイズ (バイト単位) 。`0` はクエリキャッシュが無効であることを意味します。 | `1073741824` |

> [!NOTE]
>
> * 変更した設定はすぐに反映されます。
> * クエリキャッシュ用のデータは DRAM に割り当てられます。メモリが逼迫している場合は、`max_size_in_bytes` に小さな値を設定するか、クエリキャッシュを完全に無効にしてください。

**例**

```xml theme={null}
<query_cache>
    <max_size_in_bytes>1073741824</max_size_in_bytes>
    <max_entries>1024</max_entries>
    <max_entry_size_in_bytes>1048576</max_entry_size_in_bytes>
    <max_entry_size_in_rows>30000000</max_entry_size_in_rows>
</query_cache>
```

## query\_log

[log\_queries=1](https://clickhouse.com/docs/ja/reference/settings/session-settings/log-queries.md#log_queries) が設定されている場合に、受信したクエリをログに記録するための設定です。

クエリは別個のファイルではなく、[system.query\_log](https://clickhouse.com/docs/ja/reference/system-tables/query_log.md) テーブルに記録されます。テーブル名は `table` パラメータで変更できます (以下を参照) 。

以下の設定はサブタグで設定できます。

| Setting | Description | Default | Note |
| - | - | - | - |
| `database` | データベース名。 | | |
| `table` | システムテーブル名。 | | |
| `engine` | システムテーブルの [MergeTree エンジン定義](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-creating-a-table)。 | | `partition_by` または `order_by` が定義されている場合は使用できません。指定しない場合は、デフォルトで `MergeTree` が選択されます |
| `partition_by` | システムテーブルの [カスタムパーティションキー](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/custom-partitioning-key.md)。 | | システムテーブルに `engine` を指定する場合、`partition_by` パラメータは 'engine' 内に直接指定する必要があります |
| `ttl` | テーブルの [有効期限 (TTL)](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-ttl) を指定します。 | | システムテーブルに `engine` を指定する場合、`ttl` パラメータは 'engine' 内に直接指定する必要があります |
| `order_by` | システムテーブルの [カスタムソートキー](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#order_by)。`engine` が定義されている場合は使用できません。 | | システムテーブルに `engine` を指定する場合、`order_by` パラメータは 'engine' 内に直接指定する必要があります |
| `storage_policy` | テーブルに使用するストレージポリシー名 (任意) 。 | | システムテーブルに `engine` を指定する場合、`storage_policy` パラメータは 'engine' 内に直接指定する必要があります |
| `settings` | MergeTree の動作を制御する [追加パラメータ](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#settings) (任意) 。 | | システムテーブルに `engine` を指定する場合、`settings` パラメータは 'engine' 内に直接指定する必要があります |
| `flush_interval_milliseconds` | メモリ内のバッファからテーブルへデータをフラッシュする間隔。 | `7500` | |
| `max_size_rows` | ログの最大行数。未フラッシュのログ量が max\_size に達すると、ログはディスクに書き出されます。 | `1048576` | |
| `reserved_size_rows` | ログ用に事前確保されるメモリの行数。 | `8192` | |
| `buffer_size_rows_flush_threshold` | 行数のしきい値。このしきい値に達すると、ログのディスクへのフラッシュがバックグラウンドで開始されます。 | `max_size_rows / 2` | |
| `flush_on_crash` | クラッシュ時にログをディスクへ書き出すかどうかを設定します。 | `false` | |

さらに、次のサーバーレベル設定は、すべてのシステムログテーブルに対するデフォルトのフラッシュポリシーを制御します。

```xml theme={null}
<default_system_log_flush_policy>
    <skip_alias_columns>true</skip_alias_columns>
</default_system_log_flush_policy>
```

| 設定 | 説明 | デフォルト |
| - | - | - |
| `skip_alias_columns` | `true` の場合、システムログテーブルのスキーマから ALIAS カラムが除外されます。S3 をバックエンドにしたシステムログでは必須です。 | `false` |

`enable_user_query_log` パラメータ (デフォルトで有効) は、[`system.user_query_log`](https://clickhouse.com/docs/ja/reference/system-tables/user_query_log) を作成します。これにより、各ユーザーはテーブル自体へのアクセスを必要とせずに、設定されたクエリログテーブル内の自身のレコードを確認できます。これはクエリログがローカルに保存されている場合にのみ機能します。`engine` が別のサーバーに委譲する場合 (たとえば `Distributed`) は、`system.user_query_log` が ClickHouse プロトコルのサーバー境界をまたいでユーザーごとのアクセスチェックを強制できず、そのようなバックエンドからの読み取りを拒否するため、`enable_user_query_log` を無効にしてください。

テーブルが存在しない場合、ClickHouse が作成します。ClickHouse サーバー の更新時にクエリログの構造が変更された場合は、古い構造のテーブルはリネームされ、新しいテーブルが自動的に作成されます。

**例**

```xml theme={null}
<query_log>
    <database>system</database>
    <table>query_log</table>
    <engine>Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + INTERVAL 30 day</engine>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1048576</max_size_rows>
    <reserved_size_rows>8192</reserved_size_rows>
    <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
    <flush_on_crash>false</flush_on_crash>
    <enable_user_query_log>true</enable_user_query_log>
</query_log>
```

## query\_masking\_rules

Regexp ベースのルールです。保存前にクエリとすべてのログメッセージに適用され、サーバーログ、
[`system.query_log`](https://clickhouse.com/docs/ja/reference/system-tables/query_log)、[`system.text_log`](https://clickhouse.com/docs/ja/reference/system-tables/text_log)、[`system.processes`](https://clickhouse.com/docs/ja/reference/system-tables/processes) テーブル、およびクライアントに送信されるログに反映されます。これにより、
名前、メールアドレス、個人識別子、クレジットカード番号などの機密データが SQL クエリからログに漏えいするのを防止できます。

**例**

```xml theme={null}
<query_masking_rules>
    <rule>
        <name>hide SSN</name>
        <regexp>(^|\D)\d{3}-\d{2}-\d{4}($|\D)</regexp>
        <replace>000-00-0000</replace>
    </rule>
</query_masking_rules>
```

**設定フィールド**:

| Setting | Description |
| - | - |
| `name` | ルール名 (任意) |
| `regexp` | RE2 互換の正規表現 (必須) |
| `replace` | 機密データを置換する文字列 (任意、デフォルトはアスタリスク 6 個) |

クエリマスキングルールは、クエリ全体に適用されます (不正な形式のクエリや parse できないクエリから機密データが漏えいするのを防ぐためです) 。

[`system.events`](https://clickhouse.com/docs/ja/reference/system-tables/events) テーブルには `QueryMaskingRulesMatch` というカウンターがあり、クエリマスキングルールに一致した回数の総数を表します。

分散クエリでは、各サーバーを個別に設定する必要があります。そうしないと、他の
ノードに渡されるサブクエリがマスキングされないまま保存されます。

## query\_metric\_log

これはデフォルトで無効です。

**有効化**

メトリクス履歴の収集 [`system.query_metric_log`](https://clickhouse.com/docs/ja/reference/system-tables/query_metric_log) を手動で有効にするには、以下の内容で `/etc/clickhouse-server/config.d/query_metric_log.xml` を作成します。

```xml theme={null}
<clickhouse>
    <query_metric_log>
        <database>system</database>
        <table>query_metric_log</table>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
        <collect_interval_milliseconds>1000</collect_interval_milliseconds>
        <max_size_rows>1048576</max_size_rows>
        <reserved_size_rows>8192</reserved_size_rows>
        <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
        <flush_on_crash>false</flush_on_crash>
    </query_metric_log>
</clickhouse>
```

**無効化**

`query_metric_log` 設定を無効にするには、以下の内容で `/etc/clickhouse-server/config.d/disable_query_metric_log.xml` ファイルを作成します。

```xml theme={null}
<clickhouse>
    <query_metric_log remove="1" />
</clickhouse>
```

以下の設定はサブタグで設定できます。

| Setting | Description | Default | Note |
| - | - | - | - |
| `database` | データベース名。 | | |
| `table` | システムテーブル名。 | | |
| `engine` | システムテーブルの [MergeTree エンジン定義](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-creating-a-table)。 | | `partition_by` または `order_by` が定義されている場合は使用できません。指定しない場合は、デフォルトで `MergeTree` が選択されます |
| `partition_by` | システムテーブルの [カスタムパーティションキー](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/custom-partitioning-key.md)。 | | システムテーブルに `engine` を指定する場合、`partition_by` パラメータは 'engine' 内に直接指定する必要があります |
| `ttl` | テーブルの [有効期限 (TTL)](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-ttl) を指定します。 | | システムテーブルに `engine` を指定する場合、`ttl` パラメータは 'engine' 内に直接指定する必要があります |
| `order_by` | システムテーブルの [カスタムソートキー](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#order_by)。`engine` が定義されている場合は使用できません。 | | システムテーブルに `engine` を指定する場合、`order_by` パラメータは 'engine' 内に直接指定する必要があります |
| `storage_policy` | テーブルに使用するストレージポリシー名 (任意) 。 | | システムテーブルに `engine` を指定する場合、`storage_policy` パラメータは 'engine' 内に直接指定する必要があります |
| `settings` | MergeTree の動作を制御する [追加パラメータ](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#settings) (任意) 。 | | システムテーブルに `engine` を指定する場合、`settings` パラメータは 'engine' 内に直接指定する必要があります |
| `flush_interval_milliseconds` | メモリ内のバッファからテーブルへデータをフラッシュする間隔。 | `7500` | |
| `max_size_rows` | ログの最大行数。未フラッシュのログ量が max\_size に達すると、ログはディスクに書き出されます。 | `1048576` | |
| `reserved_size_rows` | ログ用に事前確保されるメモリの行数。 | `8192` | |
| `buffer_size_rows_flush_threshold` | 行数のしきい値。このしきい値に達すると、ログのディスクへのフラッシュがバックグラウンドで開始されます。 | `max_size_rows / 2` | |
| `flush_on_crash` | クラッシュ時にログをディスクへ書き出すかどうかを設定します。 | `false` | |

さらに、次のサーバーレベル設定は、すべてのシステムログテーブルに対するデフォルトのフラッシュポリシーを制御します。

```xml theme={null}
<default_system_log_flush_policy>
    <skip_alias_columns>true</skip_alias_columns>
</default_system_log_flush_policy>
```

| 設定 | 説明 | デフォルト |
| - | - | - |
| `skip_alias_columns` | `true` の場合、システムログテーブルのスキーマから ALIAS カラムが除外されます。S3 をバックエンドにしたシステムログでは必須です。 | `false` |

## query\_thread\_log

[log\_query\_threads=1](https://clickhouse.com/docs/ja/reference/settings/session-settings/log-query.md#log_query_threads) 設定で受信したクエリのスレッドを記録するための設定です。

クエリは個別のファイルではなく、[system.query\_thread\_log](https://clickhouse.com/docs/ja/reference/system-tables/query_thread_log.md) テーブルに記録されます。テーブル名は `table` パラメータで変更できます (下記参照) 。

以下の設定はサブタグで設定できます。

| Setting | Description | Default | Note |
| - | - | - | - |
| `database` | データベース名。 | | |
| `table` | システムテーブル名。 | | |
| `engine` | システムテーブルの [MergeTree エンジン定義](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-creating-a-table)。 | | `partition_by` または `order_by` が定義されている場合は使用できません。指定しない場合は、デフォルトで `MergeTree` が選択されます |
| `partition_by` | システムテーブルの [カスタムパーティションキー](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/custom-partitioning-key.md)。 | | システムテーブルに `engine` を指定する場合、`partition_by` パラメータは 'engine' 内に直接指定する必要があります |
| `ttl` | テーブルの [有効期限 (TTL)](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-ttl) を指定します。 | | システムテーブルに `engine` を指定する場合、`ttl` パラメータは 'engine' 内に直接指定する必要があります |
| `order_by` | システムテーブルの [カスタムソートキー](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#order_by)。`engine` が定義されている場合は使用できません。 | | システムテーブルに `engine` を指定する場合、`order_by` パラメータは 'engine' 内に直接指定する必要があります |
| `storage_policy` | テーブルに使用するストレージポリシー名 (任意) 。 | | システムテーブルに `engine` を指定する場合、`storage_policy` パラメータは 'engine' 内に直接指定する必要があります |
| `settings` | MergeTree の動作を制御する [追加パラメータ](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#settings) (任意) 。 | | システムテーブルに `engine` を指定する場合、`settings` パラメータは 'engine' 内に直接指定する必要があります |
| `flush_interval_milliseconds` | メモリ内のバッファからテーブルへデータをフラッシュする間隔。 | `7500` | |
| `max_size_rows` | ログの最大行数。未フラッシュのログ量が max\_size に達すると、ログはディスクに書き出されます。 | `1048576` | |
| `reserved_size_rows` | ログ用に事前確保されるメモリの行数。 | `8192` | |
| `buffer_size_rows_flush_threshold` | 行数のしきい値。このしきい値に達すると、ログのディスクへのフラッシュがバックグラウンドで開始されます。 | `max_size_rows / 2` | |
| `flush_on_crash` | クラッシュ時にログをディスクへ書き出すかどうかを設定します。 | `false` | |

さらに、次のサーバーレベル設定は、すべてのシステムログテーブルに対するデフォルトのフラッシュポリシーを制御します。

```xml theme={null}
<default_system_log_flush_policy>
    <skip_alias_columns>true</skip_alias_columns>
</default_system_log_flush_policy>
```

| 設定 | 説明 | デフォルト |
| - | - | - |
| `skip_alias_columns` | `true` の場合、システムログテーブルのスキーマから ALIAS カラムが除外されます。S3 をバックエンドにしたシステムログでは必須です。 | `false` |

テーブルが存在しない場合は、ClickHouse が作成します。ClickHouse サーバー の更新時に query thread log の構造が変更された場合は、古い構造のテーブルはリネームされ、新しいテーブルが自動的に自動的に作成されます。

**例**

```xml theme={null}
<query_thread_log>
    <database>system</database>
    <table>query_thread_log</table>
    <partition_by>toMonday(event_date)</partition_by>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1048576</max_size_rows>
    <reserved_size_rows>8192</reserved_size_rows>
    <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
    <flush_on_crash>false</flush_on_crash>
</query_thread_log>
```

## query\_views\_log

[log\_query\_views=1](https://clickhouse.com/docs/ja/reference/settings/session-settings/log-query.md#log_query_views) 設定を指定して受信したクエリに応じて、ビュー (ライブビュー、マテリアライズドビューなど) をログに記録するための設定です。

クエリは別個のファイルではなく、[system.query\_views\_log](https://clickhouse.com/docs/ja/reference/system-tables/query_views_log.md) テーブルに記録されます。テーブル名は `table` パラメータで変更できます (以下を参照) 。

以下の設定はサブタグで設定できます。

| Setting | Description | Default | Note |
| - | - | - | - |
| `database` | データベース名。 | | |
| `table` | システムテーブル名。 | | |
| `engine` | システムテーブルの [MergeTree エンジン定義](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-creating-a-table)。 | | `partition_by` または `order_by` が定義されている場合は使用できません。指定しない場合は、デフォルトで `MergeTree` が選択されます |
| `partition_by` | システムテーブルの [カスタムパーティションキー](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/custom-partitioning-key.md)。 | | システムテーブルに `engine` を指定する場合、`partition_by` パラメータは 'engine' 内に直接指定する必要があります |
| `ttl` | テーブルの [有効期限 (TTL)](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-ttl) を指定します。 | | システムテーブルに `engine` を指定する場合、`ttl` パラメータは 'engine' 内に直接指定する必要があります |
| `order_by` | システムテーブルの [カスタムソートキー](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#order_by)。`engine` が定義されている場合は使用できません。 | | システムテーブルに `engine` を指定する場合、`order_by` パラメータは 'engine' 内に直接指定する必要があります |
| `storage_policy` | テーブルに使用するストレージポリシー名 (任意) 。 | | システムテーブルに `engine` を指定する場合、`storage_policy` パラメータは 'engine' 内に直接指定する必要があります |
| `settings` | MergeTree の動作を制御する [追加パラメータ](https://clickhouse.com/docs/ja/reference/engines/table-engines/mergetree-family/mergetree.md#settings) (任意) 。 | | システムテーブルに `engine` を指定する場合、`settings` パラメータは 'engine' 内に直接指定する必要があります |
| `flush_interval_milliseconds` | メモリ内のバッファからテーブルへデータをフラッシュする間隔。 | `7500` | |
| `max_size_rows` | ログの最大行数。未フラッシュのログ量が max\_size に達すると、ログはディスクに書き出されます。 | `1048576` | |
| `reserved_size_rows` | ログ用に事前確保されるメモリの行数。 | `8192` | |
| `buffer_size_rows_flush_threshold` | 行数のしきい値。このしきい値に達すると、ログのディスクへのフラッシュがバックグラウンドで開始されます。 | `max_size_rows / 2` | |
| `flush_on_crash` | クラッシュ時にログをディスクへ書き出すかどうかを設定します。 | `false` | |

さらに、次のサーバーレベル設定は、すべてのシステムログテーブルに対するデフォルトのフラッシュポリシーを制御します。

```xml theme={null}
<default_system_log_flush_policy>
    <skip_alias_columns>true</skip_alias_columns>
</default_system_log_flush_policy>
```

| 設定 | 説明 | デフォルト |
| - | - | - |
| `skip_alias_columns` | `true` の場合、システムログテーブルのスキーマから ALIAS カラムが除外されます。S3 をバックエンドにしたシステムログでは必須です。 | `false` |

テーブルが存在しない場合、ClickHouse が作成します。ClickHouse サーバー の更新時に query views log の構造が変更された場合は、古い構造を持つテーブルはリネームされ、新しいテーブルが自動的に作成されます。

**例**

```xml theme={null}
<query_views_log>
    <database>system</database>
    <table>query_views_log</table>
    <partition_by>toYYYYMM(event_date)</partition_by>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    <max_size_rows>1048576</max_size_rows>
    <reserved_size_rows>8192</reserved_size_rows>
    <buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
    <flush_on_crash>false</flush_on_crash>
</query_views_log>
```
