pg_stat_ch,
l’extension Postgres open-source qui transmet en flux des compteurs par instruction vers
ClickHouse Cloud. La télémétrie est normalisée dans Postgres avant de quitter
la base de données — les littéraux sont supprimés et remplacés par des placeholders, afin que les
valeurs exactes utilisées dans vos requêtes n’entrent jamais dans le flux de télémétrie.
Ouvrir Query insights
- Un vue d’ensemble qui affiche sur un seul écran un aperçu de l’état de santé de la base de données.
- Une table requête lente récurrente qui classe chaque query pattern exécuté par votre base de données, triée selon le critère qui vous semble pertinent.
- Un panneau requête récente qui répertorie les exécutions individuelles dans l’ordre chronologique inverse.
- Un volet de détail qui agrège tous les compteurs pour un seul pattern.
Vue d’ensemble
| Panneau | Ce qu’il affiche |
|---|---|
| Requêtes / s | Volume de requêtes ramené à un débit sur la fenêtre sélectionnée. |
| Latence des requêtes | Moyenne, p50, p95 et p99 sur un même graphique, pour voir quand la queue de distribution s’écarte de la médiane. |
| Répartition des opérations | Un diagramme en anneau de la répartition entre SELECT, INSERT, UPDATE et les autres opérations qui composent réellement votre charge de travail. |
| Lignes renvoyées / affectées | Nombre total de lignes traitées par la charge de travail sur la fenêtre. |
| Taux de succès du buffer | Un diagramme en anneau comparant les blocs partagés trouvés en cache aux blocs partagés lus, avec le temps CPU total dans la légende. |
| Erreurs | Nombre total d’erreurs, ventilé dans le temps. |
Requêtes lentes récurrentes
Trier selon ce que vous soupçonnez
- Durée d’exécution totale — là où la base de données a passé le plus de temps réel.
- Temps CPU — patterns gourmands en calcul.
- Appels — patterns très fréquents.
- Erreurs — échecs répétés.
- Latence moy / P50 / P95 / P99 / max — valeurs aberrantes, par percentile.
- Lignes renvoyées, Blocs lus, Blocs en cache, Octets WAL — patterns qui ont fait transiter le plus de données via le moteur, le cache ou le journal de transactions.
Affiner la table
- Base de données
- Utilisateur
- Opération (
SELECT,INSERT,UPDATE,DELETE, …) - Application — le
application_namede la chaîne de connexion
sales »
se traduit par deux menus déroulants. Les valeurs de filtre se renseignent automatiquement à partir de ce que votre
instance a réellement exécuté.
Requêtes récentes
Volet de détail
- Modèle de requête — le SQL normalisé avec les littéraux remplacés par
$1,$2, … et un bouton pour copier dans le presse-papiers. - Utilisation agrégée des ressources — une grille de 13 cartes de statistiques couvrant le nombre total d’appels, la latence moy/P95/P99/max, le temps d’exécution total, les lignes renvoyées, le ratio de succès du cache, les blocs lus, les blocs touchés, le temps CPU, les octets WAL et les erreurs.
- Contexte de la requête — la base de données, l’utilisateur, l’opération et l’application dont provient ce pattern.
- Exécutions notables — les erreurs, les exécutions inhabituellement lentes et celles qui renvoient de gros volumes de résultats, affichées avant la liste complète des exécutions récentes.
- Exécutions récentes — les exécutions individuelles du même pattern, avec des compteurs par exécution.
Compteurs par exécution
- Blocs partagés — lectures et hits toujours affichés ; écritures et blocs salis affichés lorsqu’ils sont non nuls.
- Opérations sur blocs locaux et temporaires — des opérations sur blocs temporaires non nulles signifient qu’un tri ou un hachage a débordé sur disque.
- Temps de lecture / écriture — temps d’E/S, distinct du temps CPU.
- Temps CPU — utilisateur et système, séparément.
- Workers parallèles — prévus vs. réellement lancés.
- JIT — temps total de compilation JIT et nombre de fonctions.
- WAL — octets et nombre d’enregistrements.
API Query insights
Fonctionnement
Normalisée dans Postgres, avant le wire
pg_stat_ch intercepte la phase parse-analyze, remplace chaque littéral par un
espace réservé ($1, $2, …) et met en cache le pattern obtenu dans un
cache LRU propre à chaque backend, indexé par queryid. Lorsque l’executor termine
l’instruction, c’est ce pattern mis en cache qui est associé à l’événement. L’instruction
exacte avec ses valeurs ne quitte jamais la base de données.
Sans impacter la base de données
Événements bruts, non agrégés
pg_stat_ch émet un événement brut par instruction exécutée (principale ou
imbriquée), selon l’échantillonnage appliqué. Chaque percentile, classement et ventilation
dans l’UI correspond à une requête ClickHouse exécutée sur ce même flux d’événements.
Le même moteur que celui de nos clients
Open source
pg_stat_ch est sous licence Apache 2.0. Utilisez-le avec n’importe quel Postgres et envoyez les données vers n’importe quel
ClickHouse. Le code source et les tickets sont disponibles sur
github.com/clickhouse/pg_stat_ch.
- Tableau de bord Monitoring — graphiques intégrés sur les ressources et l’activité
- Prometheus endpoint — scraper les métriques au niveau de l’hôte dans votre propre stack d’observability
- Managed Postgres OpenAPI — interroger par programmation les requête lente récurrente et les exécutions récentes
- Extensions — les extensions disponibles sur les instances Managed Postgres
pg_stat_chsur GitHub — l’extension open-source sur laquelle repose Query Insights