メインコンテンツへスキップ

概要

ClickHouse では、設定の一部として、 クエリの複雑さに制限を設けることができます。これにより、 リソースを大量に消費する可能性のあるクエリから保護し、より安全で予測可能な 実行を実現できます。特に、ユーザーインターフェイスを使用する場合に有効です。 これらの制限のほとんどは SELECT クエリにのみ適用され、分散 クエリ処理では、各サーバーに個別に適用されます。 ClickHouse では通常、各行ごとに制限を確認するのではなく、データパーツが 完全に処理された後でのみ制限を確認します。このため、 パーツの処理中に制限を超過してしまう 可能性があります。

overflow_mode 設定

ほとんどの制限には overflow_mode 設定もあり、制限を超えたときにどうなるかを定義します。指定できる値は次の 2 つです:
  • throw: 例外をスローします (デフォルト) 。
  • break: クエリの実行を停止し、部分的な結果を返します。これは、 入力データが尽きた場合と同じです。

group_by_overflow_mode の設定

group_by_overflow_mode 設定には、 値 any もあります。
  • any : セットに入ったキーについては集約を継続しますが、 セットに新しいキーは追加しません。

設定一覧

以下の設定は、クエリの複雑さに関する制限を適用するために使用されます。
「何らかの最大量」に対する制限には、0 を指定できます。 これは「無制限」を意味します。
設定概要
max_memory_usage単一サーバーでクエリを実行する際に使用できる RAM の最大量。
max_memory_usage_for_user単一サーバーでユーザーのクエリ実行に使用できる RAM の最大量。
max_rows_to_readクエリ実行時にテーブルから読み取れる行数の上限。
max_bytes_to_readクエリ実行時にテーブルから読み取れるバイト数 (非圧縮データ) の上限。
read_overflow_mode_leaf読み取りデータ量がリーフノードの制限のいずれかを超えた場合の動作を設定します。
max_rows_to_read_leaf分散クエリ実行時に、リーフノード上のローカルテーブルから読み取れる行数の上限。
max_bytes_to_read_leaf分散クエリ実行時に、リーフノード上のローカルテーブルから読み取れるバイト数 (非圧縮データ) の上限。
read_overflow_mode_leaf読み取りデータ量がリーフノードの制限のいずれかを超えた場合の動作を設定します。
max_rows_to_group_by集約で受け取る一意なキー数の上限。
group_by_overflow_mode集約の一意なキー数が制限を超えた場合の動作を設定します。
max_bytes_before_external_group_by外部メモリでの GROUP BY 句の実行を有効または無効にします。
max_bytes_ratio_before_external_group_byGROUP BY に使用できる利用可能メモリの比率。この値に達すると、集約に外部メモリが使用されます。
max_bytes_before_external_sort外部メモリでの ORDER BY 句の実行を有効または無効にします。
max_bytes_ratio_before_external_sortORDER BY に使用できる利用可能メモリの比率。この値に達すると、外部ソートが使用されます。
max_rows_to_sortソート前の行数の上限。ソート時のメモリ消費を抑えられます。
max_bytes_to_sortソート前のバイト数の上限。
sort_overflow_modeソート前に受信した行数が制限のいずれかを超えた場合の動作を設定します。
max_result_rows結果の行数を制限します。
max_result_bytes結果サイズをバイト単位 (非圧縮) で制限します。
result_overflow_mode結果のデータ量が制限のいずれかを超えた場合の動作を設定します。
max_execution_timeクエリ実行時間の上限 (秒) 。
timeout_overflow_modeクエリの実行時間が max_execution_time を超えた場合、または推定実行時間が max_estimated_execution_time を超えた場合の動作を設定します。
max_execution_time_leaf意味的には max_execution_time と似ていますが、分散クエリまたはリモートクエリのリーフノードにのみ適用されます。
timeout_overflow_mode_leafリーフノードでのクエリ実行時間が max_execution_time_leaf を超えた場合の動作を設定します。
min_execution_speed1 秒あたりの最小実行行数。
min_execution_speed_bytes1 秒あたりの最小実行バイト数。
max_execution_speed1 秒あたりの最大実行行数。
max_execution_speed_bytes1 秒あたりの最大実行バイト数。
timeout_before_checking_execution_speed指定した秒数の経過後、実行速度が遅すぎないこと (min_execution_speed 以上であること) を確認します。
max_estimated_execution_timeクエリの推定実行時間の上限 (秒) 。
max_columns_to_read1つのクエリでテーブルから読み取ることができるカラムの最大数。
max_temporary_columnsクエリ実行時に、定数カラムを含めて同時に RAM 上に保持する必要がある一時カラムの最大数。
max_temporary_non_const_columnsクエリ実行時に、定数カラムを含めずに同時に RAM 上に保持する必要がある一時カラムの最大数。
max_subquery_depthクエリ内のネストされたサブクエリ数が指定値を超えた場合の動作を設定します。
max_ast_depthクエリ構文木の最大ネスト深度。
max_ast_elementsクエリ構文木内の要素数の最大値。
max_rows_in_setサブクエリから作成される IN 句のデータセットの最大行数。
max_bytes_in_setサブクエリから作成される IN 句の集合で使用されるバイト数 (非圧縮データ) の最大値。
set_overflow_modeデータ量がいずれかの制限を超えた場合の動作を設定します。
max_rows_in_distinctDISTINCT 使用時の重複しない行の最大数。
max_bytes_in_distinctDISTINCT 使用時にハッシュテーブルが使用する、メモリ内の state の最大サイズ (非圧縮バイト単位) 。
distinct_overflow_modeデータ量がいずれかの制限を超えた場合の動作を設定します。
max_rows_to_transferGLOBAL IN/JOIN の実行時に、リモートサーバーに渡すか一時テーブルに保存できる最大サイズ (行数) 。
max_bytes_to_transferGLOBAL IN/JOIN の実行時に、リモートサーバーに渡すか一時テーブルに保存できる最大バイト数 (非圧縮データ) 。
transfer_overflow_modeデータ量がいずれかの制限を超えた場合の動作を設定します。
max_rows_in_joinテーブルの JOIN 時に使用されるハッシュテーブル内の行数を制限します。
max_bytes_in_joinテーブルの JOIN 時に使用されるハッシュテーブルの最大サイズ (バイト数) 。
join_overflow_mode以下の JOIN 制限のいずれかに達したときに ClickHouse が実行する動作を定義します。
max_partitions_per_insert_block1つの挿入ブロック内のパーティション数の上限を設定し、ブロックに含まれるパーティションが多すぎる場合は例外がスローされます。
throw_on_max_partitions_per_insert_blockmax_partitions_per_insert_block に達したときの動作を制御できます。
max_temporary_data_on_disk_size_for_user同時実行中のそのユーザーのすべてのクエリについて、ディスク上の一時ファイルが消費できるデータ量の最大値 (バイト単位) 。
max_temporary_data_on_disk_size_for_query同時実行中のすべてのクエリについて、ディスク上の一時ファイルが消費できるデータ量の最大値 (バイト単位) 。
max_sessions_for_user認証済みユーザーごとの ClickHouse サーバーへの同時セッション数の最大値。
max_partitions_to_read1つのクエリでアクセスできるパーティション数の上限を設定します。

廃止された設定

以下の設定は廃止されています。

max_pipeline_depth

パイプラインの最大深度。各データブロックがクエリ処理中に通過する 変換の数に対応します。単一サーバーの範囲内でカウントされます。 パイプラインの深度がこれを超えると、例外がスローされます。
最終更新日 2026年6月10日