Skip to main content
これらの設定は system.settings で参照でき、ソースコード から自動生成されています。

max_insert_block_size

別名: max_insert_block_size_rows テーブルへの挿入時に形成されるブロックの最大サイズ (行数) です。 この設定は、次の 2 つの場面でのブロック形成を制御します。
  1. フォーマットのパース: server が任意のインターフェイス (HTTP、インラインデータ付きの clickhouse-client、gRPC、PostgreSQL ワイヤプロトコル) から行ベースの入力フォーマット (CSV、TSV、JSONEachRow など) をパースする場合、ブロックは次の条件で出力されます。
    • min_insert_block_size_rows と min_insert_block_size_bytes の両方に達した場合、または
    • max_insert_block_size_rows または max_insert_block_size_bytes のいずれかに達した場合
    注: clickhouse-client または clickhouse-local を使用してファイルから読み取る場合、データは client 自身がパースするため、この設定はクライアント側で適用されます。
  2. INSERT 操作: INSERT クエリの実行中、およびデータが materialized view を通過する際のこの設定の動作は、use_strict_insert_block_limits によって異なります。
    • 有効な場合: ブロックは次の条件で出力されます。
      • 最小しきい値 (AND) : min_insert_block_size_rows と min_insert_block_size_bytes の両方に達した場合
      • 最大しきい値 (OR) : max_insert_block_size_rows または max_insert_block_size_bytes のいずれかに達した場合
    • 無効な場合: min_insert_block_size_rows または min_insert_block_size_bytes のいずれかに達するとブロックが出力されます。max_insert_block_size の設定は適用されません。
設定可能な値:
  • 正の整数。

max_insert_block_size_bytes

テーブルへの挿入用に形成するブロックの最大サイズ (バイト単位) 。 この設定は max_insert_block_size_rows と組み合わせて機能し、同じコンテキストでのブロック形成を制御します。これらの設定がいつ、どのように適用されるかの詳細については、max_insert_block_size_rows を参照してください。 設定可能な値:
  • 正の整数。
  • 0 — この設定はブロック形成に関与しません。

max_insert_delayed_streams_for_parallel_write

part の最終フラッシュを遅延させる streams (カラム) の最大数。デフォルトは自動です (基盤となるストレージが並列書き込みをサポートしている場合は 100。たとえば S3。そうでない場合は無効) 。 Cloud でのデフォルト値: 50.

max_insert_threads

INSERT クエリの実行に使用するスレッドの最大数です。 これは INSERT SELECT と、データが clickhouse-client または HTTP インターフェイス経由で送信される通常の INSERT の両方に適用されます。パイプラインの書き込み側 (ブロックの集約と宛先テーブルへの書き込み) は、 この数までのスレッドで並列化されます。 設定可能な値:
  • 0 — 自動。サーバーで使用可能な CPU コア数 (max_threads と同じ自動値) を使用し、max_insert_threads_min_free_memory_per_thread によりメモリ逼迫時には減らされます。
  • 1 — INSERT は単一スレッドで実行されます (並列実行なし) 。INSERT ... SELECT の挿入順序を維持するには、この値を使用します。
  • 1 より大きい正の整数 — 指定した数のスレッドで並列実行します。
バージョン 26.8 より前のデフォルト値は 1 (並列実行なし) でした。26.8 以降、デフォルト値 (0) は CPU コア数に設定されるため、INSERT はデフォルトで並列実行されます。以前の動作に戻すには、max_insert_threads1 に設定するか、compatibility 設定を使用します。 Cloud でのデフォルト値:
  • メモリ 8 GiB のノードでは 1
  • メモリ 16 GiB のノードでは 2
  • より大きいノードでは 4
並列 INSERT SELECT が有効なのは、SELECT 部分が並列に実行される場合のみです。max_threads 設定を参照してください。 通常の INSERT では、入力データは単一ストリームとして読み取り・解析され、その後、書き込みのためにパイプラインがこの数のストリームにリサイズされます。 書き込み側の並列化は、同期的な通常の INSERT にのみ適用されます。非同期挿入 (async_insert = 1) はキューに格納され、バックグラウンドでフラッシュされるため、この設定の影響を受けず、常に単一ストリームのままです。 書き込み側は、安全に並列化できる場合にのみ並列化されます。それ以外の場合は単一ストリームのままとなり、この設定は効果を持ちません。特に、use_strict_insert_block_limits が有効で、宛先テーブル (または宛先が転送するテーブル) が挿入ブロックを重複排除し、かつクエリで挿入の重複排除が有効な場合 (deduplicate_insert を参照) 、宛先に依存する materialized view がある場合 (宛先が転送するテーブルの view (たとえば Alias の背後にあるもの) も含む。ただし、parallel_view_processing が有効で、かつ依存 view チェーンに重複排除のリスクがない場合を除く。つまり、view 内の重複排除が無効 (deduplicate_blocks_in_dependent_materialized_views) であるか、依存 view のどのパスでも重複排除できない場合) 、および宛先が Buffer または Distributed の場合は常に、書き込みは単一ストリームに維持されます。Buffer は独自のコンテキストでフラッシュし、Distributed は書き込みをリモートシャードに転送します (リモートシャード自体がデータをバッファリングする場合があります) 。そのため、このクエリの重複排除設定は最終的な書き込みには適用されず、設定にかかわらず単一ストリームに維持されます。並列化されないクォーラム挿入 (insert_quorum2 以上または 'auto' であり、insert_quorum_parallel が無効) も、テーブルごとに処理中のクォーラム part を 1 つしか許可しないため、単一ストリームのままとなります。 値を大きくすると、メモリ使用量も増加します。

max_insert_threads_min_free_memory_per_thread

max_threads ではなく max_insert_threads に適用される点を除き、max_threads_min_free_memory_per_thread と同じです。既定値がより大きいのは、挿入パイプラインでは通常、読み取りパイプラインよりもスレッドごとに大きなバッファ (MergeTree のパーツ、圧縮ブロック) を保持するためです。 空きメモリ量が max_insert_threads にこの値を掛けた値を下回る場合、max_insert_threads はその範囲に収まるように減らされ、最小値は 1 です。 この制限を無効にするには、0 に設定します。
最終更新日 2026年8月14日