Interroger dans ClickHouse CloudLes données de cette table système sont stockées localement sur chaque nœud de ClickHouse Cloud. Pour obtenir une vue complète de l’ensemble des données, il faut donc utiliser la fonction
clusterAllReplicas. Consultez cette page pour plus de détails.Description
Contient des statistiques de sélectivité échantillonnées collectées lors de la lecture de tablesMergeTree. La table n’est renseignée que lorsque predicate_statistics_sample_rate est supérieur à 0.
Disponibilité
system.predicate_statistics_log n’est créée que si la configuration du serveur contient une section predicate_statistics_log. Après avoir créé le log, définissez predicate_statistics_sample_rate à une valeur supérieure à 0 pour collecter des lignes. En l’absence de cette section de log, les requêtes sur la table échouent avec UNKNOWN_TABLE.
Formes des lignes
Une même requête peut produire deux types de lignes danssystem.predicate_statistics_log :
- Lignes de filtre, émises à chaque étape prewhere/filter dans
MergeTreeSelectProcessor. Elles alimententpredicate_expression,input_rows,passed_rows,filter_selectivity, ainsi que les colonnes du prédicat complettotal_input_rows,total_passed_rows,total_selectivity. Les colonnes liées aux index sont vides. - Lignes d’index, émises à chaque étape de lecture dans
ReadFromMergeTree. Elles alimentent les tableauxindex_names,index_types,total_granules,granules_afteretindex_selectivities, avec une entrée par étape d’index (clé primaire, partition, skip indexes). Les colonnes liées aux prédicats sont vides.
query_id et la même table, et peuvent donc être jointes lorsque les deux sont nécessaires.
Échantillonnage et surcoût
L’échantillonnage est contrôlé parpredicate_statistics_sample_rate :
0désactive la collecte.1échantillonne chaque requête.N > 1échantillonne environ1 / Ndes requêtes, selon un hachage dequery_id.
SYSTEM FLUSH LOGS si vous avez besoin que les lignes apparaissent immédiatement.
Cette table peut être tronquée ou supprimée à tout moment sans risque.
Colonnes
hostname(LowCardinality(String)) — Nom d’hôte du serveur qui exécute la requête.clickhouse_version(LowCardinality(String)) — Version du serveur ClickHouse qui a produit la ligne.system_processor(LowCardinality(String)) — Architecture CPU du serveur ClickHouse qui a produit la ligne.event_date(Date) — Date de l’événement.event_time(DateTime) — Horodatage de l’écriture de cette entrée de journal.database(LowCardinality(String)) — Nom de la base de données de la table cible.table(LowCardinality(String)) — Nom de la table cible.query_id(String) — ID de requête permettant de faire le lien avec query_log.predicate_expression(String) — Expression de filtre complète prise en charge par cette étape prewhere/filter (dump ActionsDAG).input_rows(UInt64) — Lignes entrant dans cette étape prewhere/filter.passed_rows(UInt64) — Lignes conservées après cette étape prewhere/filter.filter_selectivity(Float64) — Sélectivité de cette étape : passed_rows / input_rows.total_input_rows(UInt64) — Lignes entrant dans la première étape prewhere (nombre total de lignes lues à partir des granules).total_passed_rows(UInt64) — Lignes conservées après toutes les étapes prewhere (lignes transmises à la requête).total_selectivity(Float64) — Sélectivité de l’ensemble du prédicat : total_passed_rows / total_input_rows.index_names(Array(LowCardinality(String))) — Noms des index appliqués, par ex. [‘PrimaryKey’, ‘idx_bf_status’] (lignes d’index uniquement).index_types(Array(LowCardinality(String))) — Types d’index appliqués : PrimaryKey, Skip, MinMax, Partition (lignes d’index uniquement).total_granules(Array(UInt64)) — Granules à l’entrée de chaque étape d’index (lignes d’index uniquement).granules_after(Array(UInt64)) — Granules restants après chaque étape d’index (lignes d’index uniquement).index_selectivities(Array(Float64)) — Sélectivité par index : granules_after / total_granules (lignes d’index uniquement).