max_insert_block_size
max_insert_block_size_rows
テーブルへの挿入時に形成されるブロックの最大サイズ (行数) です。
この設定は、次の 2 つの場面でのブロック形成を制御します。
-
フォーマットのパース: 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 のいずれかに達した場合
-
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
- 正の整数。
- 0 — この設定はブロック形成に関与しません。
max_insert_delayed_streams_for_parallel_write
50.
max_insert_threads
INSERT SELECT クエリの実行に使用するスレッドの最大数です。
設定可能な値:
- 0 (または 1) —
INSERT SELECTは並列実行されません。 - 正の整数 (1 より大きい値) 。
- メモリ 8 GiB のノードでは
1 - メモリ 16 GiB のノードでは
2 - それより大きいノードでは
4
INSERT SELECT が有効なのは、SELECT 部分が並列に実行される場合のみです。max_threads 設定を参照してください。
値を大きくすると、メモリ使用量も増加します。
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 に設定します。