apply_deleted_mask
論理削除された行を除外するフィルタリングを有効にします。無効にすると、クエリでそれらの行も読み取れるようになります。これは、デバッグや「削除取り消し」のシナリオで役立ちますapply_mutations_on_fly
true の場合、data part にまだ反映されていない mutations (UPDATE と DELETE) は、SELECT 時に適用されます。apply_prewhere_after_final
有効にすると、ReplacingMergeTree および類似のエンジンで、PREWHERE 条件が FINAL 処理の後に適用されます。 これは、PREWHERE が重複する行ごとに値が異なる可能性のあるカラムを参照しており、 フィルタリング前に FINAL で採用される行を確定させたい場合に役立ちます。無効な場合、PREWHERE は読み取り時に適用されます。 注: 行ポリシーは PREWHERE より前に適用する必要があるため、apply_row_policy_after_final によって行ポリシーの適用が遅延される場合は、
この設定に関係なく PREWHERE も遅延されます。これは、ポリシー式が非決定論的である場合、ORDER BY に含まれないカラムを読み取る場合、
または浮動小数点型である(あるいは浮動小数点型を含む)型を持つ ORDER BY カラムを読み取る場合に発生します。
設定可能な値:
- 0 — PREWHERE は FINAL の前に適用されます。ただし、遅延された行ポリシーによって PREWHERE も遅延される場合を除きます (デフォルト) 。
- 1 — PREWHERE は FINAL の後に適用されます。
apply_row_policy_after_final
有効にすると、*MergeTree テーブルでは、行ポリシーは FINAL の処理後に適用されます。 (特に ReplacingMergeTree) このようにポリシーの適用を遅延させる場合、ポリシーが引き続き先に適用されるよう、PREWHERE も併せて遅延されます (PREWHERE を無条件に遅延させるにはapply_prewhere_after_final を参照してください)。
無効にすると、行ポリシーは FINAL の前に適用されるため、ポリシーによって
ReplacingMergeTree や同様のエンジンで重複排除に使われるべき行が除外される場合、結果が異なる可能性があります。
行ポリシーの式が決定論的であり、かつ ORDER BY 内の浮動小数点型以外のカラムのみに依存している場合は、最適化のため、引き続き
FINAL の前に適用されます。そのようなフィルタリングは重複排除の結果に影響しないためです。浮動小数点型のカラム、
または浮動小数点型を含むカラム (Tuple(Float64, ...)、Array(Float64)、Nullable(Float64) など) は
対象外です。-0.0 と 0.0 は重複排除では同一のキーとして扱われる一方、ポリシーの条件ではこれらを区別できるためです。
設定可能な値:
- 0 — 行ポリシーは FINAL の前に適用されます。
- 1 — 行ポリシーは FINAL の後に適用されます (デフォルト) 。
apply_settings_from_server
クライアントがサーバーから設定を受け入れるかどうかを指定します。 これはクライアント側で実行される操作にのみ影響します。特に、INSERT 入力データのパースとクエリ結果のフォーマットに影響します。クエリ実行の大部分はサーバー側で行われるため、この設定の影響は受けません。 通常、この設定はクライアント経由 (client のコマンドライン引数、SET クエリ、または SELECT クエリの SETTINGS セクション) ではなく、ユーザープロファイル (users.xml または ALTER USER のようなクエリ) で設定する必要があります。クライアント経由では false に変更できますが、true には変更できません (ユーザープロファイルで apply_settings_from_server = false になっている場合、サーバーは設定を送信しないためです) 。
なお、当初 (24.12) はサーバー設定 (send_settings_to_client) がありましたが、使い勝手を向上させるため、後にこのクライアント設定に置き換えられました。
apply_string_filters_during_scan
String 型のカラムに対する部分文字列検索条件を、PREWHERE からカラムのスキャン処理へプッシュダウンします。
PREWHERE 条件に、String (または Nullable(String)) カラム内の空でない部分文字列を検索する連言項
(LIKE、position、startsWith、endsWith、または空でない文字列との等値比較) が含まれている場合、リーダーはデシリアライズ時にすべての値をこの条件で判定し、
一致しない値を空文字列として読み込みます。一致しない値のデータはカラムにコピーされないため、条件の選択性が高い場合は読み込みが高速化し、メモリ使用量も削減されます。
一致しない値を持つ行は必ず PREWHERE によって除外され、またこのような条件が空文字列に一致することはないため、クエリ結果は変わりません。
選択性が低いと判明した場合、このフィルタは実行時にアダプティブに無効化されます。
さらに、WHERE から PREWHERE への最適化において、部分文字列検索条件 (LIKE、position、startsWith、endsWith) が
クエリ対象のすべてのカラムを使用している場合でも、これらの条件を移動できるようになります (通常は意味がありませんが、この設定を有効にするとスキャン自体のコストが下がります) 。
定数文字列との等値比較は、この目的では移動されません。ただし、すでに PREWHERE にある場合は、引き続きスキャン中に適用されます。
MergeTree テーブルおよび Parquet フォーマットからの読み込みでサポートされています。
なお、並列レプリカの自動判定のために収集される入力バイト数の推定値
(RuntimeDataflowStatisticsInputBytes) は、読み込まれたブロックのメモリ上のサイズに基づいています。そのため、値が空文字列に置き換えられた場合は、
ディスクから実際に読み込まれたデータ量よりも小さく見積もられます。
設定可能な値:
- 0 — 無効。
- 1 — 有効。