ClickHouse Cloud でのクエリこのシステムテーブルのデータは、ClickHouse Cloud の各ノードにローカルに保持されています。したがって、すべてのデータを完全に把握するには、
clusterAllReplicas 関数を使用する必要があります。詳細については、こちらを参照してください。説明
MergeTree テーブルの読み取り時に収集された、サンプルベースの選択性統計が含まれます。このテーブルにデータが格納されるのは、predicate_statistics_sample_rate が 0 より大きい場合のみです。
このテーブルを使用すると、実際のワークロードにおいてユーザー述語がどの程度の選択性を持つか、またプライマリキーまたはスキップ索引によるフィルタリング後にどれだけのグラニュールが残るかを確認できます。このデータは、ワークロードに基づく索引およびプロジェクションの推奨を行うための入力として利用されます。
行の構造
system.predicate_statistics_log に 2 種類の行を生成できます。
- フィルタ行:
MergeTreeSelectProcessorの各 prewhere/filter ステップごとに出力されます。predicate_expression、input_rows、passed_rows、filter_selectivity、および述語全体に関するカラムtotal_input_rows、total_passed_rows、total_selectivityが設定されます。索引関連のカラムは空です。 - 索引行:
ReadFromMergeTreeの各読み取りステップごとに出力されます。index_names、index_types、total_granules、granules_after、index_selectivitiesの各配列が設定され、各索引ステージ (主キー、パーティション、スキップ索引) ごとに 1 つのエントリが入ります。述語関連のカラムは空です。
query_id と table を共有するため、両方が必要な場合は結合できます。
サンプリングとオーバーヘッド
predicate_statistics_sample_rate で制御されます。
0は収集を無効にします。1はすべてのクエリをサンプリングします。N > 1の場合、query_idをハッシュ化してクエリのおよそ1 / Nをサンプリングします。
SYSTEM FLUSH LOGS を使用してください。
カラム
hostname(LowCardinality(String)) — クエリを実行しているサーバーのホスト名。event_date(Date) — イベント日。event_time(DateTime) — このログエントリが書き込まれた時点のタイムスタンプ。database(LowCardinality(String)) — ターゲットテーブルのデータベース名。table(LowCardinality(String)) — ターゲットテーブルのテーブル名。query_id(String) — query_log と関連付けるためのクエリ ID。predicate_expression(String) — この prewhere/filter ステップで処理されるフィルタ式全体 (ActionsDAG ダンプ) 。input_rows(UInt64) — この prewhere/filter ステップに入力される行数。passed_rows(UInt64) — この prewhere/filter ステップを通過した行数。filter_selectivity(Float64) — このステップの選択性: passed_rows / input_rows。total_input_rows(UInt64) — 最初の prewhere ステップに入力される行数 (グラニュールから読み取られた総行数) 。total_passed_rows(UInt64) — すべての prewhere ステップを通過した行数 (クエリに渡される行数) 。total_selectivity(Float64) — 述語全体の選択性: total_passed_rows / total_input_rows。index_names(Array(LowCardinality(String))) — 適用された索引の名前 (例: [‘PrimaryKey’, ‘idx_bf_status’]) (索引行のみ) 。index_types(Array(LowCardinality(String))) — 適用された索引の種類: PrimaryKey, Skip, MinMax, Partition (索引行のみ) 。total_granules(Array(UInt64)) — 各索引ステージに入力されるグラニュール数 (索引行のみ) 。granules_after(Array(UInt64)) — 各索引ステージの後に残るグラニュール数 (索引行のみ) 。index_selectivities(Array(Float64)) — 索引ごとの選択性: granules_after / total_granules (索引行のみ) 。