これらの設定は system.settings で参照でき、source から自動生成されています。
prefer_column_name_to_alias
クエリの式や句で、別名ではなく元のカラム名を使用するかどうかを切り替えます。特に、別名がカラム名と同じ場合に重要です。詳しくは Expression Aliases を参照してください。この設定を有効にすると、ClickHouse における別名の構文規則が、他の多くのデータベースエンジンとの互換性をより高めます。
設定可能な値:
- 0 — カラム名は別名に置き換えられます。
- 1 — カラム名は別名に置き換えられません。
例
有効時と無効時の違い:
クエリ:
SET prefer_column_name_to_alias = 0;
SELECT avg(number) AS number, max(number) FROM numbers(10);結果:
Received exception from server (version 21.5.1):
Code: 184. DB::Exception: Received from localhost:9000. DB::Exception: Aggregate function avg(number) is found inside another aggregate function in query: While processing avg(number) AS number.クエリ:
SET prefer_column_name_to_alias = 1;
SELECT avg(number) AS number, max(number) FROM numbers(10);結果:
┌─number─┬─max(number)─┐
│ 4.5 │ 9 │
└────────┴─────────────┘prefer_external_sort_block_bytes
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 24.5 | 16744704 | 外部ソートで最大ブロックバイト数を優先し、マージ時のメモリ使用量を削減します。 |
外部ソートで最大ブロックバイト数を優先し、マージ時のメモリ使用量を削減します。
prefer_global_in_and_join
IN/JOIN 演算子を GLOBAL IN/GLOBAL JOIN に置き換える機能を有効にします。
設定可能な値:
- 0 — 無効。
IN/JOIN演算子はGLOBAL IN/GLOBAL JOINに置き換えられません。 - 1 — 有効。
IN/JOIN演算子はGLOBAL IN/GLOBAL JOINに置き換えられます。
使用方法
SET distributed_product_mode=global は分散テーブルに対するクエリの動作を変更できますが、ローカルテーブルや外部リソース上のテーブルには適していません。そこで prefer_global_in_and_join 設定が役立ちます。
たとえば、分散には適さないローカルテーブルを持つクエリ処理ノードがあるとします。この場合、それらのデータを分散処理時に GLOBAL キーワード (GLOBAL IN/GLOBAL JOIN) を使って動的に各ノードへ配布する必要があります。
prefer_global_in_and_join のもう 1 つのユースケースは、外部エンジンで作成されたテーブルへのアクセスです。この設定を使うと、そのようなテーブルを join する際の外部ソースへの呼び出し回数を削減できます。クエリごとに 1 回だけです。
関連項目:
GLOBAL IN/GLOBAL JOINの使用方法の詳細は、分散サブクエリ を参照してください
prefer_localhost_replica
分散クエリの処理時に、localhost のレプリカを優先して使用するかどうかを有効または無効にします。
設定可能な値:
- 1 — localhost のレプリカが存在する場合、ClickHouse は常にその localhost のレプリカにクエリを送信します。
- 0 — ClickHouse は、load_balancing 設定で指定された負荷分散戦略を使用します。
prefer_warmed_unmerged_parts_seconds
ClickHouse Cloud でのみ有効です。マージ済みパーツがこの秒数より新しく、かつ事前ウォームされていない場合 (cache_populated_by_fetch を参照) でも、その元になったすべてのパーツが利用可能で事前ウォームされていれば、SELECT クエリは代わりにそれらのパーツから読み取ります。Replicated-/SharedMergeTree でのみ有効です。なお、これは CacheWarmer がそのパーツを処理したかどうかだけを確認します。別の要因でそのパーツが cache に取り込まれた場合でも、CacheWarmer が処理するまではコールドと見なされます。また、いったんウォームされた後に cache から追い出された場合でも、ウォーム済みと見なされます。