Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.
Cette page documente les tables que Lakebase écrit dans votre schéma de catalogue Unity une fois que vous avez configuré l’observabilité pour un projet. Insights et Genie lisent ces mêmes données, et parce qu’elles se trouvent dans votre propre catalogue Unity, vous pouvez l’interroger directement avec n’importe quel outil Azure Databricks.
Note
Il s’agit d’une fonctionnalité bêta. Les noms de tables et de colonnes peuvent changer avant la disponibilité générale.
Ce qui est capturé
Lakebase capture les signaux qu’un DBA expérimenté recherche, atterrissant dans une poignée de tables que vous pouvez interroger directement une fois qu’elles sont exportées :
| Ce qui est capturé | Où il atterrit |
|---|---|
| Sessions actives et événements d’attente |
active_session_history, wait_event_counters |
| Plans de requête et statistiques d’exécution par requête |
plan_history, pg_stat_statements_counters |
| Modifications de schéma : ce qui a changé, quand et par qui | ddl_history |
| Statistiques de base de données : taille, lignes lues et modifiées, et nombres de sessions |
database_counters, database_gauges |
| Utilisation des ressources de calcul : PROCESSEUR, mémoire, cache, connexions |
compute_counters, compute_gauges |
| Messages bruts du journal Postgres, y compris l’erreur à l’origine d’un échec | postgres_logs |
Insights et Genie lisent ces données pour ancrer leurs réponses sur ce qui s’est réellement passé dans votre base de données, et les mêmes tableaux alimentent les tableaux de bord d’observabilité prêts à l’emploi. Le reste de cette page documente chaque colonne de chaque tableau.
Colonnes communes à chaque table
Chaque tableau ci-dessous comprend ces colonnes, qui identifient l’emplacement d’une ligne :
| Column | Type | Description |
|---|---|---|
project_id |
STRING | Le projet Lakebase de la ligne provient. |
branch_id |
STRING | La branche de la ligne provient. |
endpoint_id |
STRING | Point de terminaison de calcul à partir duquel la ligne provient. |
compute_id |
STRING | Instance de calcul spécifique. Cela change lorsqu’un calcul est mis à l’échelle à zéro et reprend. |
ts |
TIMESTAMP | Lorsque la ligne a été enregistrée. |
compute_mode |
STRING | Mode de calcul à l’heure, par exemple en lecture-écriture ou en lecture seule. |
Les tables avec noms se terminant _counters par une colonne incluent également une previous_ts colonne, marquant le début de l’intervalle sur lequel les valeurs d’une ligne ont été accumulées. Il s’agit de valeurs cumulatives pour cet intervalle, et non pour les lectures à un point dans le temps. Les tableaux se terminant par _gauges des lectures à un point dans le temps sont à la place, et n’ont pas previous_ts.
Les tableaux ci-dessous répertorient uniquement les colonnes au-delà de ces colonnes communes.
Activité de session
Capture instantanée de chaque back-end actif, échantillonné en continu. Il s’agit du même modèle que AWS Performance Insights ou l’historique de session active d’Oracle (ASH) : si une session fait quoi que ce soit, y compris en attente, elle apparaît ici.
active_session_history
| Column | Type | Description |
|---|---|---|
sample_seq |
LONG | Position ordinale de cet exemple dans son lot. |
pid |
LONG | ID de processus du back-end. |
datid |
LONG | ID d’objet de la base de données. |
userid |
LONG | ID d’objet du rôle de connexion. |
queryid |
LONG | Identifie la requête en cours d’exécution. Correspond queryid à pg_stat_statements_counters. |
wait_event_info |
LONG | Encodage interne de l’événement d’attente. |
wait_event_type |
STRING | Catégorie de l’événement d’attente, par exemple Timeout ou Lock. |
wait_event |
STRING | Événement d’attente spécifique, par exemple PgSleep. |
backend_state |
LONG | État du back-end, par exemple actif ou inactif. |
backend_type |
LONG | Type de processus back-end. |
xact_age_ms |
LONG | Durée d’ouverture de la transaction actuelle. |
query_age_ms |
LONG | Durée d’exécution de la requête actuelle. |
blocking_pid |
LONG | PiD d’une session bloquant celle-ci, le cas échéant. |
leader_pid |
LONG | PID du leader de requête parallèle, si ce back-end est un worker parallèle. |
flags |
LONG | Indicateurs d’état internes. |
plan_fingerprint |
LONG | Liens vers une forme de plan spécifique dans plan_history. |
appname_hash |
LONG | Hachage du nom de l’application de connexion. |
Événements d’attente
Nombre d’événements d’attente agrégés et temps, en complément de la vue par exemple dans active_session_history.
wait_event_counters
| Column | Type | Description |
|---|---|---|
wait_event_id |
LONG | Encodage interne de l’événement d’attente. |
wait_class_name |
STRING | Catégorie de l’événement d’attente. |
wait_event_name |
STRING | Événement d’attente spécifique. |
wait_event_count |
LONG | Combien de fois cet événement d’attente s’est produit dans l’intervalle. |
wait_event_time |
DOUBLE | Temps total passé dans cet événement d’attente pendant l’intervalle. |
Plans de requête
Enregistrement par exécution des plans de requête, y compris les statistiques de stockage complètes et spécifiques à Neon. Il s’agit de la table la plus détaillée et, en règle générale, où une investigation de requête lente se termine.
plan_history
| Column | Type | Description |
|---|---|---|
row_position |
LONG | Position ordinale de cette ligne dans son lot. |
analyze_enabled |
BOOLEAN | Indique si le plan inclut des statistiques d’exécution réelles (EXPLAIN ANALYZE, pas seulement des estimations). |
buffers_enabled |
BOOLEAN | Indique si le plan inclut des statistiques d’utilisation des mémoires tampons. |
query_hash |
STRING | Hachage identifiant le texte de la requête. |
queryid |
LONG | Identifie la requête. Correspondances queryid dans pg_stat_statements_counters et active_session_history. |
duration_ms |
DOUBLE | Durée d’exécution de la requête. |
total_cost |
DOUBLE | Coût estimé du planificateur pour la requête. |
plan_rows |
LONG | Nombre estimé de lignes du planificateur. |
actual_rows |
LONG | Nombre de lignes réel retourné. |
plan_fingerprint |
LONG | Identifie cette forme de plan spécifique. Correspond plan_fingerprint à active_session_history. |
lock_wait_time_ms |
DOUBLE | Temps passé à attendre les verrous. |
planning_time_ms |
DOUBLE | Le temps passé à planifier la requête, séparément de l’exécution. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | Activité de cache de mémoire tampon partagée pour cette exécution. |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | Activité de mémoire tampon locale, pour les tables temporaires. |
temp_blks_read / temp_blks_written |
LONG | Activité de fichier temporaire, par exemple à partir d’un tri ou d’un hachage volumineux. |
neon_getpage_count |
LONG | Nombre de demandes de page envoyées au serveur de pages. |
neon_file_cache_hits |
LONG | Nombre de pages servies à partir du cache de fichiers local au lieu du serveur de pages. |
neon_getpage_wait_us |
LONG | Temps passé en attente sur les demandes de page de serveur de pages, en microsecondes. |
backend_pid |
LONG | ID de processus principal qui a exécuté cette requête. |
lock_wait_count |
LONG | Nombre de fois où cette exécution a attendu un verrou. |
userid / dbid |
LONG | ID d’objet du rôle de connexion et de la base de données. |
query_text |
STRING | Texte de la requête. |
plan_json |
STRING | Plan de requête complet, en tant que JSON. |
usename / datname |
STRING | Noms du rôle de connexion et de la base de données. |
application_name / client_addr |
STRING | Nom et adresse client de l’application de connexion. |
wait_events |
STRING | Événements d’attente observés pendant cette exécution. |
parameters |
STRING | Lier les paramètres utilisés dans la requête, le cas échéant. |
blocking_pids |
STRING | Pids de sessions qui ont bloqué cette exécution, le cas échéant. |
neon_branch_id / neon_endpoint_id / neon_timeline_id |
STRING | Identificateurs de neon internes pour la branche, le point de terminaison et la chronologie. |
cpu_user_time_ms / cpu_sys_time_ms |
DOUBLE | Temps processeur consommé par cette exécution, divisé en temps utilisateur et système. |
voluntary_csw / involuntary_csw |
LONG | Le contexte bascule pendant cette exécution. |
trace_id / span_id / trace_flags / service_name |
CORDE / CORDE / LONG / CORDE | Identificateurs de suivi de style OpenTelemetry, si la requête faisait partie d’une requête trace. |
timeline_id |
LONG | Identificateur de chronologie interne. |
truncated |
BOOLEAN | Indique si les données de cette ligne (par exemple, un plan volumineux) ont été tronquées avant d’être écrites. |
Statistiques sur les requêtes
Statistiques agrégées par requête, provenant de l’extension standard pg_stat_statements .
pg_stat_statements_counters
| Column | Type | Description |
|---|---|---|
userid / dbid |
LONG | ID d’objet du rôle de connexion et de la base de données. |
queryid |
LONG | Identifie la requête. Correspondances queryid dans plan_history et active_session_history. |
toplevel |
BOOLEAN | Indique si cette ligne concerne une instruction de niveau supérieur, par opposition à une instruction imbriquée à l’intérieur d’une fonction ou d’une procédure PL/pgSQL. Consultez la limitation PL/pgSQL. |
query |
STRING | Texte de la requête. |
calls |
LONG | Nombre de fois où cette requête a été exécutée dans l’intervalle. |
plans |
LONG | Nombre de fois où cette requête a été planifiée dans l’intervalle. |
rows |
LONG | Nombre total de lignes retournées ou affectées. |
total_exec_time / total_plan_time |
DOUBLE | Temps total consacré à l’exécution et à la planification de cette requête dans l’intervalle. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | Activité de cache de mémoire tampon partagée. |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | Activité de mémoire tampon locale, pour les tables temporaires. |
temp_blks_read / temp_blks_written |
LONG | Activité de fichier temporaire. |
wal_bytes / wal_fpi / wal_records |
LONG | Volume de journal en écriture anticipée généré par cette requête. |
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time |
Mixed | Statistiques de compilation JIT (juste-à-temps), si JIT a été utilisé pour cette requête. |
Modifications de schéma
Modifications de schéma : ce qui a changé, quand et par qui. C’est ce que Genie lit pour tracer un incident vers une modification de schéma, qu’il s’agisse d’un déploiement ou d’une modification manuelle.
ddl_history
| Column | Type | Description |
|---|---|---|
row_position |
LONG | Position ordinale de cette ligne dans son lot. |
command_tag |
STRING | Type de commande DDL, par exemple ALTER TABLE. |
object_type / object_name |
STRING | Type et nom de l’objet qui a changé. |
schema_name |
STRING | Schéma Postgres auquel appartient l’objet. |
query_text |
STRING | Instruction DDL complète. |
duration_ms |
DOUBLE | Durée d’exécution de l’instruction DDL. |
userid / usename |
LONG / CORDE | ID et nom de l’objet du rôle de connexion. |
application_name |
STRING | Nom de l’application de connexion. |
backend_pid |
LONG | ID de processus principal qui a exécuté l’instruction. |
dbid |
LONG | ID d’objet de la base de données. |
search_path |
STRING | Chemin de recherche de la session à l’heure. |
ddl_json |
STRING | Représentation structurée et analysée de l’instruction DDL. |
Note
La capture DDL a un véritable écart : une modification apportée juste autour d’une reprise de calcul de mise à l’échelle à zéro peut être manquée. Si une modification de schéma n’apparaît pas ici même si vous savez qu’elle s’est produite, c’est la raison la plus probable. Consultez Limitations.
Journaux Postgres
Les messages de journalisation Postgres bruts, y compris l’erreur spécifique derrière une défaillance.
postgres_logs
| Column | Type | Description |
|---|---|---|
sample_seq |
LONG | Position ordinale de cette ligne dans son lot. |
elevel |
LONG | Encodage au niveau du journal interne. |
severity |
STRING | Gravité du journal, par exemple ERROR ou LOG. |
sqlstate |
STRING | Code d’erreur Postgres SQLSTATE, par exemple 42703 pour une colonne non définie. |
backend_pid / leader_backend_pid |
LONG | ID de processus principal et PID de son leader de requête parallèle le cas échéant. |
userid / usename |
LONG / CORDE | ID et nom de l’objet du rôle de connexion. |
datid / datname |
LONG / CORDE | ID et nom de l’objet de la base de données. |
application_name / client_addr |
STRING | Nom et adresse client de l’application de connexion. |
schema_name / table_name / column_name / constraint_name / datatype_name |
STRING | Schéma, table, colonne, contrainte ou type de données référencé par l’erreur, lorsque Postgres en a un. |
funcname |
STRING | La fonction dans laquelle l’erreur s’est produite, le cas échéant. |
filename / lineno |
CORDE / LONG | Le fichier source Postgres et la ligne de l’erreur proviennent. |
message |
STRING | Texte du message de journal. |
detail / hint / context |
STRING | Détails supplémentaires, correctif suggéré et contexte de l’erreur, quand Postgres les contient. |
internalquery |
STRING | Requête générée en interne liée à l’erreur, le cas échéant. |
statement |
STRING | Instruction qui a déclenché cette entrée de journal. |
truncated_mask |
LONG | Indique les champs, le cas échéant, ont été tronqués avant d’être écrits. |
Note
Les champs structurés schema_nameet table_name les column_namechamps ne sont pas renseignés pour chaque type d’erreur. Une erreur d’analyse simple « colonne n’existe pas » (SQLSTATE 42703par exemple, les laisse vides même si elle message nomme directement la colonne. Ne vous fiez pas à ces champs renseignés. Vérifiez message d’abord.
Métriques de calcul
Utilisation des ressources au niveau du calcul : processeur, mémoire, disque et E/S réseau et cache de fichiers local (LFC), cache côté calcul de Lakebase devant le serveur de pages.
compute_counters
| Column | Type | Description |
|---|---|---|
backpressure_throttling_seconds |
DOUBLE | Temps passé la couche de stockage à limiter les écritures dans cet intervalle. Une valeur non nulle signifie que le volume d’écriture a dépassé ce que le stockage peut absorber. |
host_busiest_cpu_seconds / host_cpu_seconds |
DOUBLE | Temps processeur consommé, pour le cœur le plus bus et dans le total. |
host_disk_read_bytes / host_disk_written_bytes |
DOUBLE | Volume d’E/S de disque. |
host_network_receive_bytes / host_network_transmit_bytes |
DOUBLE | Volume d’E/S réseau. |
lfc_evictions / lfc_hits / lfc_misses / lfc_writes |
LONG | Activité du cache de fichiers local pour cet intervalle. |
replica_lfc_redo_evictions |
LONG | Évictions de cache de fichiers locales provoquées par la restauration de réplica, si ce calcul est un réplica en lecture. |
compute_gauges
| Column | Type | Description |
|---|---|---|
current_lsn |
LONG | Position actuelle du journal d’écriture anticipée. |
replica_wal_replay_lsn / replica_wal_receive_lsn |
LONG | Relecture wal et positions de réception, si ce calcul est un réplica en lecture. |
max_connections |
LONG | Limite de connexion configurée. |
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m |
LONG | Taille estimée du jeu de travail au cours des 5, 15 et 60 dernières minutes. |
lfc_size_limit / lfc_allocated / lfc_used |
LONG | Capacité du cache de fichiers local et utilisation actuelle. |
total_size_limit / total_size |
LONG | Capacité de stockage globale et utilisation actuelle. |
replication_lag_bytes / replication_lag_time_ms |
LONG / DOUBLE | Décalage de réplication, si ce calcul est un réplica en lecture. |
host_logical_cpus / host_memory_total_bytes |
DOUBLE | Processeur et mémoire provisionnés du calcul. |
Métriques de base de données
Activité par base de données : lignes modifiées, transactions, sessions et intégrité du vide. C’est là que les ballonnements de table et les signaux de nettoyage automatique sont en direct.
database_counters
| Column | Type | Description |
|---|---|---|
datid / datname |
LONG / CORDE | ID et nom de l’objet de la base de données. |
active_time_ms / idle_in_transaction_time_ms / session_time_ms |
DOUBLE | Temps passé actif, inactif dans une transaction ouverte et connecté dans l’ensemble. |
deadlocks |
LONG | Nombre d’interblocages détectés. |
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated |
LONG | Activité au niveau des lignes pour l’intervalle. |
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed |
LONG | Nombre de cycles de vie de session. |
shared_blks_hit / shared_blks_read |
LONG | Activité de cache de mémoire tampon partagée. |
xact_commit / xact_rollback |
LONG | Transactions validées et restaurées. |
database_gauges
| Column | Type | Description |
|---|---|---|
datid / datname |
LONG / CORDE | ID et nom de l’objet de la base de données. |
numbackends |
LONG | Nombre actuel de connexions à cette base de données. |
size |
LONG | Taille de la base de données sur disque. |
oldest_frozen_xid_age / oldest_mxid_age |
LONG | ID de transaction et âge de l’ID multixact de la ligne non vide la plus ancienne. Les valeurs montantes sont le signal le plus ancien de la chute de vide derrière, bien avant que le ballonnement ne devienne visible dans la taille de la table. |
Limitations
Warning
Si vous créez des rôles pour connecter des applications, un mot de passe tapé dans une instruction SQL peut se retrouver dans l’historique CREATE ROLE ... PASSWORD '...' des requêtes ou des instructions. Créez le rôle via l’interface utilisateur, SDK, API ou CLI, qui génèrent le mot de passe côté serveur pour que vous ne le tapiez jamais en texte clair. L’interface affiche le mot de passe généré une seule fois. Le SDK, l’API et la ligne de code ne le renvoient pas, donc obtenez un mot de passe ensuite. Voir Comment obtenir un mot de passe.
Pendant la version bêta, les limitations suivantes s’appliquent :
COPYles opérations ne sont actuellement pas capturées dans l’historique du plan de requête.Une requête exécutée à l’intérieur d’une fonction OU d’une procédure PL/pgSQL n’est pas capturée dans les données de télémétrie au niveau de la requête, sauf si elle s’exécute également en tant qu’instruction de niveau supérieur. Le suivi des propres instructions de Postgres compte uniquement les instructions de niveau supérieur par défaut.
Les branches et les points de terminaison apparaissent dans la télémétrie exportée et les insights avec leur ID interne (par exemple,
br-odd-mud-y2icrn1h), et non avec un nom d’affichage comme « production ». Consultez l’ID dans l’interface utilisateur de Lakebase si vous devez confirmer à quelle branche ou à quel point de terminaison un insight ou une ligne de tableau fait référence.Les GUCs qui activent la capture de télémétrie peuvent ne pas se propager automatiquement à une ressource de calcul existante. Si la télémétrie n’apparaît pas après avoir configuré l’observabilité, connectez-vous au projet et vérifiez :
SHOW neon_monitor.log_capture_enabled; SHOW databricks.o11y_exporter_enabled;Les deux doivent retourner
on. Si l’un ou l’autre retourneoff, redémarrez le point de terminaison de calcul.
Étapes suivantes
- Trouvez et résolvez les problèmes avec Insights : voyez ces données apparaissant comme un diagnostic, et non comme des lignes brutes.
- Enquêtez avec Genie : posez vos questions sur cette télémétrie avec vos propres mots.