これらの設定は system.settings で参照でき、ソース から自動生成されています。
group_by_overflow_mode
集約に使用する一意なキーの数が上限を超えた場合の動作を設定します。
throw: 例外を送出するbreak: クエリの実行を停止し、途中までの結果を返すany: set に含まれているキーについては集約を続行しますが、新しいキーは set に追加しません。
any を使用すると、GROUP BY の近似結果を得られます。この近似の精度は、
データの統計的な性質に依存します。
group_by_top_k_optimization_observation_rows
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 26.8 | 65536 | 新しい実験的設定: 各集約ストリームが、何も除外しない完全な top-K ヒープを純粋なオーバーヘッドと判断して固定するまでに観測する行数。 |
enable_group_by_top_k_optimization の場合、各集約ストリームが、入力行の 10% 未満しかスキップせず、容量より少ないキーしか追い出さなかった完全な top-K ヒープを固定するまでに観測する行数です。ヒープが固定されると、最適化が無効であるかのように集約が続行されます。
実効ウィンドウはヒープの予約済みサイズの少なくとも 2 倍です。そのため、ヒープは評価される前に必ず満杯になる機会があります。0 はこの固定を無効にします (ただし、境界の同順位セットがヒープの容量を超えた場合、ヒープは引き続き固定されます) 。
これは、ORDER BY のない GROUP BY keys LIMIT K クエリには影響しません。この形式では固定は常に無効です。この形式のプランには、ヒープがハッシュテーブルを制限している間にのみ効果を発揮する合成ソートが含まれるためです。ヒープを固定すると、最適化なしの場合よりも遅いプランになってしまいます。
group_by_two_level_threshold
この数以上のキーになると、二段階集約が開始されます。0 の場合、しきい値は設定されません。
group_by_two_level_threshold_bytes
集約状態のサイズが何バイト以上になると二段階集約を使用し始めるかを指定します。0 の場合、しきい値は設定されません。いずれか 1 つのしきい値がトリガーされると、二段階集約が使用されます。
group_by_use_nulls
GROUP BY 句で集約キーの型をどのように扱うかを変更します。
ROLLUP、CUBE、または GROUPING SETS 指定子を使用すると、一部の結果行の生成時に使われない集約キーが生じることがあります。
この設定に応じて、これらのキーに対応するカラムは、該当する行でデフォルト値または NULL で埋められます。
設定可能な値:
- 0 — 欠損値の生成には、集約キー型のデフォルト値が使用されます。
- 1 — ClickHouse は SQL 標準に従って
GROUP BYを実行します。集約キーの型は Nullable に変換されます。対応する集約キーのカラムは、そのキーが使われなかった行では NULL で埋められます。
関連項目: