これらの設定は system.settings で確認でき、source から自動生成されています。
max_bytes_before_external_group_by
Cloud でのデフォルト値: レプリカあたりのメモリ量の半分。
GROUP BY 句を外部メモリで実行するかどうかを制御します。
(外部メモリでの GROUP BY を参照)
設定可能な値:
- 1 回の GROUP BY 操作で使用できる RAM の最大量 (バイト単位) 。
0— 外部メモリでのGROUP BYは無効。
max_bytes_before_external_join
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 26.4 | 0 | ハッシュ結合のディスクへの自動スピルを制御する新しい設定です。0 以外の値を指定するとスピルが有効になり、バイト単位のしきい値が設定されます。 |
0 以外の値に設定し、join_algorithm が hash、parallel_hash、default、または auto の場合、右側のデータがこのバイト数を超えると、ディスクへのスピルを有効にするためにハッシュ結合は自動的に Grace Hash Join に変換されます。0 (デフォルト) に設定すると、この絶対バイトしきい値は無効になりますが、max_bytes_ratio_before_external_join (デフォルトは 0.5) によって自動スピルが引き続き発生する可能性があります。自動スピルを完全に無効にするには、両方を 0 に設定してください。これにより、JOIN 最適化による順序どおりの読み取りは行えなくなります。
max_bytes_before_external_sort
Cloud でのデフォルト値: レプリカあたりのメモリ量の半分。
ORDER BY 句を外部メモリで実行するかどうかを設定します。ORDER BY の実装の詳細を参照してください。
ORDER BY 操作中のメモリ使用量がこのしきい値をバイト単位で超えると、「外部ソート」モード (中間データをディスクに書き出す) が有効になります。
設定可能な値:
- 1 回の ORDER BY 操作で使用できる RAM の最大量 (バイト単位) 。 推奨値は、使用可能なシステムメモリの半分です
0— 外部メモリでのORDER BYは無効です。
max_bytes_before_remerge_sort
ORDER BY と LIMIT を使用する場合、メモリ使用量が指定したしきい値を超えると、最終マージの前にブロックの追加マージを行い、上位 LIMIT 行のみを保持します。
max_bytes_for_lazy_final
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 26.4 | 256000000 | 遅延 FINAL 最適化で使用される Set の最大バイト数に関する新しい設定 |
遅延 FINAL 最適化で使用される Set の最大バイト数です。これを超えると、通常の FINAL にフォールバックします。
max_bytes_in_distinct
DISTINCT の使用時にハッシュテーブルが使用する、メモリ内の状態の最大バイト数 (非圧縮バイト数) 。
max_bytes_in_join
テーブルの join 時に使用される右側のデータ構造 (通常はハッシュ テーブル) の最大サイズ (バイト単位) です。
この設定は、SELECT … JOIN 操作と Join テーブルエンジン に適用されます。
1 つのクエリに複数の join が含まれる場合、ClickHouse は各
中間結果に対してこの設定をチェックします。上限に達した場合の動作は、
選択した join_algorithm によって異なります。アルゴリズムごとの動作 (spill、再パーティション化、切り替え、または
join_overflow_mode に応じた throw/break) については、
その設定を参照してください。
設定可能な値:
- 正の整数。
- 0 — メモリ制御は無効です。
max_bytes_in_set
サブクエリから作成された IN 句内のSetで使用される、非圧縮データの最大バイト数。
max_bytes_ratio_before_external_group_by
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 25.1 | 0.5 | デフォルトでディスクへの自動スピルを有効にする。 |
| 24.12 | 0 | 新しい設定 |
GROUP BY に使用できる利用可能メモリの割合です。しきい値に達すると、
集約には外部メモリが使用されます。
たとえば 0.6 に設定すると、GROUP BY は実行開始時点で利用可能メモリ
(server/user/merges に割り当てられたメモリ) の 60% まで使用でき、
それ以降は外部集約を使用し始めます。
max_bytes_ratio_before_external_join
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 26.5 | 0.5 | 新しい設定: ハッシュ結合で、利用可能なメモリのうちディスクへのスピルを開始するしきい値として使用する比率です。既定では `0.5` で有効になっており、`max_bytes_ratio_before_external_group_by` および `max_bytes_ratio_before_external_sort` に対応しています。絶対値の `max_bytes_before_external_join` と組み合わせて使用され、2 つのうち小さい方が適用されます。 |
JOIN に使用できる利用可能メモリの比率です。この値に達すると、ハッシュ結合は Grace Hash Join に変換され、右側のデータがディスクにスピルされます。
たとえば 0.6 に設定すると、JOIN は実行開始時に、右側のハッシュテーブルに対して利用可能メモリ (server/user/merges 用) の 60% まで使用できます。その後はディスクへのスピルが開始されます。
max_bytes_before_external_join と max_bytes_ratio_before_external_join の両方が設定されている場合は、結果として小さい方のしきい値が使用されます。比率が 0 の場合は、絶対値の設定のみが適用されます。
join_algorithm が hash、parallel_hash、default、auto のいずれかで、かつ一時データパスが設定されている場合にのみ効果があります。
max_bytes_ratio_before_external_sort
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 25.1 | 0.5 | デフォルトでディスクへの自動スピルを有効化。 |
| 24.12 | 0 | 新しい設定 |
ORDER BY に使用できる利用可能メモリの比率です。この値に達すると、外部ソートが使用されます。
たとえば 0.6 に設定すると、ORDER BY は実行開始時に利用可能メモリ (server/user/merges) の 60% まで使用できます。それを超えると、外部ソートの使用が開始されます。
なお、max_bytes_before_external_sort は引き続き適用されるため、ディスクへのスピルが行われるのは、ソート対象のブロックが max_bytes_before_external_sort より大きい場合だけです。
max_bytes_to_read
クエリの実行時に、テーブルから読み取れる最大バイト数 (非圧縮データ) です。 この制限は、処理されるデータの各 chunk ごとにチェックされ、最も深いテーブル式にのみ適用されます。リモートサーバーから読み取る場合は、リモートサーバー上でのみチェックされます。
max_bytes_to_read_leaf
分散クエリの実行時に、リーフノード上のローカル テーブルから読み取れるバイト数 (非圧縮データ) の最大値です。分散クエリ では各分片 (leaf) に対して複数のサブクエリを発行できますが、この制限が チェックされるのはリーフノードでの読み取り段階のみであり、ルートノードでの結果の マージ段階では無視されます。
たとえば、あるクラスターが 2 つの分片で構成され、各分片に
100 バイトのデータを持つテーブルが含まれているとします。両方のテーブルから
すべてのデータを読み取る分散クエリは、max_bytes_to_read=150 が設定されていると、
合計で 200 バイトになるため失敗します。一方、max_bytes_to_read_leaf=150 を
設定したクエリは成功します。これは、リーフノードでは最大 100 バイトしか
読み取られないためです。
この制限は、処理されるデータの各 chunk ごとにチェックされます。
max_bytes_to_sort
ソート前に処理できる最大バイト数です。ORDER BY 操作で、指定した量を超える
非圧縮バイト数を処理する必要がある場合の動作は、sort_overflow_mode によって
決まります。既定では throw に設定されています。
max_bytes_to_transfer
GLOBAL IN/JOIN セクションの実行時に、リモートサーバーに渡される、または一時テーブルに保存される最大バイト数 (非圧縮データ) 。