Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Esta característica se encuentra en su versión beta. Para utilizarla, un administrador de espacio de trabajo debe activar la Observabilidad de Lakebase en las Tablas del Sistema desde la página de Previsualizaciones . Consulte Administrar versiones preliminares de Azure Databricks.
Lakebase captura su telemetría de observabilidad en el system.lakebase esquema, comenzando con señales avanzadas de Postgres. La captura es automática. Con esa vista previa activada, la telemetría aparece en estas tablas mientras el cálculo del proyecto se ejecuta. No hay configuración que crear, ni destino que elegir, ni credenciales que proporcionar.
Insights y Genie leen las mismas tablas, y puedes consultarlas con cualquier herramienta de Azure Databricks.
Note
Los nombres de tabla y columna pueden cambiar antes de la disponibilidad general.
Requirements
- La observabilidad de Lakebase en la vista previa de Tablas del Sistema habilitada para tu espacio de trabajo.
- Un proyecto de Lakebase en AWS o Azure. Consulte Obtención de una base de datos de Postgres.
¿Qué se captura?
Lakebase registra las señales que necesitas para explicar una base de datos lenta o defectuosa, a través de las siguientes tablas:
| ¿Qué se captura? | Nombre de la tabla |
|---|---|
| Sesiones activas y eventos de espera |
system.lakebase.active_session_history, system.lakebase.wait_event_counters |
| Planes de consulta y estadísticas de ejecución por consulta |
system.lakebase.plan_history, system.lakebase.pg_stat_statements_counters |
| Cambios de esquema: qué ha cambiado, cuándo y por quién | system.lakebase.ddl_history |
| Estadísticas de base de datos: tamaño, filas leídas y modificadas, y recuentos de sesiones |
system.lakebase.database_counters, system.lakebase.database_gauges |
| Uso de recursos de proceso: CPU, memoria, caché, conexiones |
system.lakebase.compute_counters, system.lakebase.compute_gauges |
| Mensajes de registro de Postgres sin procesar, incluido el error subyacente a un fallo | system.lakebase.postgres_logs |
Los registros se conservan durante 7 días. El resto de esta página documenta cada columna de cada tabla. Para ver dónde se sitúan estas tablas entre las demás tablas del sistema, véase la referencia de la tabla del sistema Lakebase.
Access
Las system.lakebase tablas están gobernadas por el Catálogo Unity. Los usuarios con los roles de administrador de cuenta y administrador de metastore pueden leer la telemetría y gestionar el acceso a ella. Consulte Administración de privilegios en Unity Catalog.
Access se aplica a nivel de esquema, así que un usuario que puede leer system.lakebase ve la telemetría de cada proyecto en la cuenta.
Texto de la declaración enmascarada
Las columnas que contienen el texto del extracto regresan <REDACTED> , a menos que seas administrador de cuenta o miembro del databricks_pii_access grupo a nivel de cuenta. Un administrador de cuenta crea y gestiona ese grupo. Consulta Crear y gestionar el databricks_pii_access grupo y acceder al texto de la declaración enmascarada.
Columnas comunes a cada tabla
Cada tabla siguiente incluye estas columnas, que identifican de dónde procede una fila:
| Columna | Tipo | Description |
|---|---|---|
project_id |
STRING | El proyecto Lakebase del que procede la fila. |
branch_id |
STRING | Rama de la que procede la fila. |
endpoint_id |
STRING | Punto de conexión de proceso del que procede la fila. |
compute_id |
STRING | Instancia de proceso específica. Esto cambia cuando un proceso se escala a cero y se reanuda. |
ts |
TIMESTAMP | Cuando se registró la fila. |
compute_mode |
STRING | El modo del proceso en el momento, por ejemplo, de lectura y escritura o de solo lectura. |
Las tablas con nombres que terminan en _counters también incluyen una previous_ts columna, lo que marca el inicio del intervalo en el que se acumulan los valores de una fila. Estos son valores acumulativos para ese intervalo, no lecturas a un momento dado. Las tablas que terminan en _gauges son lecturas a un momento dado y no previous_tstienen .
Las tablas siguientes enumeran solo las columnas más allá de estas comunes.
Actividad de sesión
Instantánea de cada back-end activo, muestreada continuamente. Este es el mismo patrón que AWS Performance Insights o el historial de sesiones activas de Oracle (ASH): si una sesión está haciendo algo, incluida la espera, se muestra aquí.
active_session_history
| Columna | Tipo | Description |
|---|---|---|
sample_seq |
LONG | Posición ordinal de este ejemplo dentro de su lote. |
pid |
LONG | Identificador de proceso del back-end. |
datid |
LONG | Identificador de objeto de la base de datos. |
userid |
LONG | Identificador de objeto del rol de conexión. |
queryid |
LONG | Identifica la consulta que se está ejecutando. Coincide queryid con en pg_stat_statements_counters. |
wait_event_info |
LONG | Codificación interna del evento de espera. |
wait_event_type |
STRING | Categoría del evento de espera, por ejemplo Timeout , o Lock. |
wait_event |
STRING | Evento de espera específico, por ejemplo PgSleep. |
backend_state |
LONG | Estado del back-end, por ejemplo, activo o inactivo. |
backend_type |
LONG | Tipo de proceso de back-end. |
xact_age_ms |
LONG | Cuánto tiempo se ha abierto la transacción actual. |
query_age_ms |
LONG | Cuánto tiempo se ha ejecutado la consulta actual. |
blocking_pid |
LONG | PiD de una sesión que bloquea esta, si existe. |
leader_pid |
LONG | PID del líder de consultas en paralelo, si este back-end es un trabajo paralelo. |
flags |
LONG | Marcas de estado internas. |
plan_fingerprint |
LONG | Vínculos a una forma de plan específica en plan_history. |
appname_hash |
LONG | Hash del nombre de la aplicación de conexión. |
Eventos de espera
Recuentos de eventos de espera agregados y tiempo, complementando la vista por ejemplo en active_session_history.
wait_event_counters
| Columna | Tipo | Description |
|---|---|---|
wait_event_id |
LONG | Codificación interna del evento de espera. |
wait_class_name |
STRING | Categoría del evento de espera. |
wait_event_name |
STRING | Evento de espera específico. |
wait_event_count |
LONG | Cuántas veces se produjo este evento de espera en el intervalo. |
wait_event_time |
DOUBLE | Tiempo total invertido en este evento de espera durante el intervalo. |
Planes de consulta
Un registro por ejecución de los planes de consulta, incluidas las estadísticas de almacenamiento completas y específicas de Neon. Esta es la tabla más detallada y, normalmente, donde termina una investigación de consulta lenta.
plan_history
| Columna | Tipo | Description |
|---|---|---|
row_position |
LONG | Posición ordinal de esta fila dentro de su lote. |
analyze_enabled |
BOOLEAN | Si el plan incluye estadísticas de ejecución reales (EXPLAIN ANALYZE), no solo estimaciones. |
buffers_enabled |
BOOLEAN | Si el plan incluye estadísticas de uso del búfer. |
query_hash |
STRING | Hash que identifica el texto de la consulta. |
queryid |
LONG | Identifica la consulta. Coincide queryid con en pg_stat_statements_counters y active_session_history. |
duration_ms |
DOUBLE | Cuánto tiempo tardó la consulta en ejecutarse. |
total_cost |
DOUBLE | Costo estimado del planificador para la consulta. |
plan_rows |
LONG | Recuento estimado de filas del planificador. |
actual_rows |
LONG | Número real de filas devuelto. |
plan_fingerprint |
LONG | Identifica esta forma de plan específica. Coincide plan_fingerprint con en active_session_history. |
lock_wait_time_ms |
DOUBLE | Tiempo dedicado a esperar en bloqueos. |
planning_time_ms |
DOUBLE | Tiempo dedicado a planear la consulta, independiente de la ejecución. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | Actividad de caché de búfer compartido para esta ejecución. |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | Actividad de búfer local para tablas temporales. |
temp_blks_read / temp_blks_written |
LONG | Actividad de archivo temporal, por ejemplo, de una ordenación o hash grandes. |
neon_getpage_count |
LONG | Número de solicitudes de página enviadas al servidor de páginas. |
neon_file_cache_hits |
LONG | Número de páginas que se sirven desde la caché de archivos local en lugar del servidor de páginas. |
neon_getpage_wait_us |
LONG | Tiempo dedicado a esperar en las solicitudes de página pageserver, en microsegundos. |
backend_pid |
LONG | Identificador del proceso de back-end que ejecutó esta consulta. |
lock_wait_count |
LONG | Número de veces que esta ejecución ha esperado en un bloqueo. |
userid / dbid |
LONG | Identificadores de objeto de la base de datos y del rol de conexión. |
query_text |
STRING | Texto de la consulta. Enmascarado. Ver texto de la declaración enmascarada. |
plan_json |
STRING | Plan de consulta completo, como JSON. Enmascarado. Ver texto de la declaración enmascarada. |
usename / datname |
STRING | Nombres de la base de datos y del rol de conexión. |
application_name / client_addr |
STRING | El nombre y la dirección de cliente de la aplicación de conexión. |
wait_events |
STRING | Eventos de espera observados durante esta ejecución. |
parameters |
STRING | Enlazar parámetros usados en la consulta, si los hay. Enmascarado. Ver texto de la declaración enmascarada. |
blocking_pids |
STRING | PID de sesiones que bloquearon esta ejecución, si las hubiera. |
neon_branch_id / neon_endpoint_id / neon_timeline_id |
STRING | Identificadores internos de Neon para la rama, el punto de conexión y la escala de tiempo. |
cpu_user_time_ms / cpu_sys_time_ms |
DOUBLE | Tiempo de CPU consumido por esta ejecución, dividido en tiempo de usuario y sistema. |
voluntary_csw / involuntary_csw |
LONG | El contexto cambia durante esta ejecución. |
trace_id / span_id / trace_flags / service_name |
STRING/STRING/LONG/STRING | Identificadores de seguimiento de estilo OpenTelemetry, si la consulta formaba parte de una solicitud rastreada. |
timeline_id |
LONG | Identificador de escala de tiempo interno. |
truncated |
BOOLEAN | Si los datos de esta fila (por ejemplo, un plan grande) se truncaron antes de escribirse. |
Estadísticas de consultas
Estadísticas agregadas por consulta, procedentes de la extensión estándar pg_stat_statements .
pg_stat_statements_counters
| Columna | Tipo | Description |
|---|---|---|
userid / dbid |
LONG | Identificadores de objeto de la base de datos y del rol de conexión. |
queryid |
LONG | Identifica la consulta. Coincide queryid con en plan_history y active_session_history. |
toplevel |
BOOLEAN | Si esta fila es para una instrucción de nivel superior, en lugar de una anidada dentro de una función o procedimiento PL/pgSQL. Consulte la limitación de PL/pgSQL. |
query |
STRING | Texto de la consulta. Enmascarado. Ver texto de la declaración enmascarada. |
calls |
LONG | Número de veces que se ejecutó esta consulta en el intervalo. |
plans |
LONG | Número de veces que esta consulta se planeó en el intervalo. |
rows |
LONG | Total de filas devueltas o afectadas. |
total_exec_time / total_plan_time |
DOUBLE | Tiempo total dedicado a ejecutar y planear esta consulta en el intervalo. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | Actividad de caché de búfer compartido. |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | Actividad de búfer local para tablas temporales. |
temp_blks_read / temp_blks_written |
LONG | Actividad de archivo temporal. |
wal_bytes / wal_fpi / wal_records |
LONG | Volumen de registro de escritura previa generado por esta consulta. |
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time |
Mixto | Estadísticas de compilación JIT (Just-In-Time), si se usó JIT para esta consulta. |
Cambios en los esquemas
Cambios de esquema: qué ha cambiado, cuándo y por quién. Esto es lo que Genie lee para realizar un seguimiento de un incidente a un cambio de esquema, ya sea desde una implementación o una edición manual.
ddl_history
| Columna | Tipo | Description |
|---|---|---|
row_position |
LONG | Posición ordinal de esta fila dentro de su lote. |
command_tag |
STRING | Tipo de comando DDL, por ejemplo ALTER TABLE. |
object_type / object_name |
STRING | Tipo y nombre del objeto que cambió. |
schema_name |
STRING | Esquema postgres al que pertenece el objeto. |
query_text |
STRING | Instrucción DDL completa. Enmascarado. Ver texto de la declaración enmascarada. |
duration_ms |
DOUBLE | Cuánto tiempo tardó la instrucción DDL en ejecutarse. |
userid / usename |
LONG/STRING | Identificador y nombre del objeto del rol de conexión. |
application_name |
STRING | Nombre de la aplicación de conexión. |
backend_pid |
LONG | Identificador de proceso de back-end que ejecutó la instrucción . |
dbid |
LONG | Identificador de objeto de la base de datos. |
search_path |
STRING | Ruta de acceso de búsqueda de la sesión en el momento. |
ddl_json |
STRING | Representación estructurada y analizada de la instrucción DDL. Enmascarado. Ver texto de la declaración enmascarada. |
Note
La captura DDL tiene una brecha real: se puede perder un cambio realizado justo alrededor de una reanudación de proceso de escala a cero. Si un cambio de esquema no aparece aquí aunque sepa que ha ocurrido, es la razón más probable. Consulte Limitaciones.
Registros de Postgres
Mensajes de registro de Postgres sin procesar, incluido el error específico detrás de un error.
postgres_logs
| Columna | Tipo | Description |
|---|---|---|
sample_seq |
LONG | Posición ordinal de esta fila dentro de su lote. |
elevel |
LONG | Codificación de nivel de registro interno. |
severity |
STRING | Gravedad del registro, por ejemplo ERROR , o LOG. |
sqlstate |
STRING | Código de error de Postgres SQLSTATE, por ejemplo 42703 , para una columna no definida. |
backend_pid / leader_backend_pid |
LONG | El identificador del proceso de back-end y su PID del líder de consulta en paralelo, si procede. |
userid / usename |
LONG/STRING | Identificador y nombre del objeto del rol de conexión. |
datid / datname |
LONG/STRING | Identificador y nombre del objeto de la base de datos. |
application_name / client_addr |
STRING | El nombre y la dirección de cliente de la aplicación de conexión. |
schema_name / table_name / column_name / constraint_name / datatype_name |
STRING | El esquema, la tabla, la columna, la restricción o el tipo de datos al que hace referencia el error, cuando Postgres tiene uno. |
funcname |
STRING | Función en la que se produjo el error, si procede. |
filename / lineno |
STRING/LONG | El archivo de origen de Postgres y la línea del error se originó. |
message |
STRING | Texto del mensaje de registro. |
detail / hint / context |
STRING | Detalles adicionales, una corrección sugerida y el contexto del error, cuando Postgres los tiene. |
internalquery |
STRING | Una consulta generada internamente relacionada con el error, si procede. |
statement |
STRING | Instrucción que desencadenó esta entrada de registro. Enmascarado. Ver texto de la declaración enmascarada. |
truncated_mask |
LONG | Indica qué campos, si los hay, se truncaron antes de escribirse. |
Note
Los campos estructurados schema_name, table_namey column_name no se rellenan para cada tipo de error. Un error de análisis de "columna no existe" sin formato (SQLSTATE 42703), por ejemplo, los deja vacíos aunque message asigne nombres a la columna directamente. No confíe en que estos campos se rellenen. Compruebe message primero.
Métricas de cálculo
Uso de recursos de nivel de proceso: CPU, memoria, E/S de disco y red, y caché de archivos local (LFC), caché del lado proceso de Lakebase delante del servidor de páginas.
compute_counters
| Columna | Tipo | Description |
|---|---|---|
backpressure_throttling_seconds |
DOUBLE | Tiempo que la capa de almacenamiento ha dedicado a las escrituras de limitación en este intervalo. Un valor distinto de cero significa que el volumen de escritura superó lo que el almacenamiento puede absorber. |
host_busiest_cpu_seconds / host_cpu_seconds |
DOUBLE | Tiempo de CPU consumido, para el núcleo más ocupado y en total. |
host_disk_read_bytes / host_disk_written_bytes |
DOUBLE | Volumen de E/S de disco. |
host_network_receive_bytes / host_network_transmit_bytes |
DOUBLE | Volumen de E/S de red. |
lfc_evictions / lfc_hits / lfc_misses / lfc_writes |
LONG | Actividad de caché de archivos local para este intervalo. |
replica_lfc_redo_evictions |
LONG | Las expulsiones de caché de archivos locales causadas por la rehacer de réplica, si este proceso es una réplica de lectura. |
compute_gauges
| Columna | Tipo | Description |
|---|---|---|
current_lsn |
LONG | Posición actual del registro de escritura anticipada. |
replica_wal_replay_lsn / replica_wal_receive_lsn |
LONG | WAL reproduce y recibe posiciones, si este proceso es una réplica de lectura. |
max_connections |
LONG | Límite de conexión configurado. |
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m |
LONG | Tamaño estimado del conjunto de trabajo durante los últimos 5, 15 y 60 minutos. |
lfc_size_limit / lfc_allocated / lfc_used |
LONG | Capacidad de caché de archivos local y uso actual. |
total_size_limit / total_size |
LONG | Capacidad de almacenamiento general y uso actual. |
replication_lag_bytes / replication_lag_time_ms |
LONG/DOUBLE | Retraso de replicación, si este proceso es una réplica de lectura. |
host_logical_cpus / host_memory_total_bytes |
DOUBLE | Cpu y memoria aprovisionadas del proceso. |
Métricas de base de datos
Actividad por base de datos: filas modificadas, transacciones, sesiones y estado de vacío. Aquí es donde se activan las señales de sobredimensionamiento de la tabla y autovacuo.
database_counters
| Columna | Tipo | Description |
|---|---|---|
datid / datname |
LONG/STRING | Identificador y nombre del objeto de la base de datos. |
active_time_ms / idle_in_transaction_time_ms / session_time_ms |
DOUBLE | Tiempo invertido activo, inactivo en una transacción abierta y conectado en general. |
deadlocks |
LONG | Número de interbloqueos detectados. |
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated |
LONG | Actividad de nivel de fila para el intervalo. |
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed |
LONG | Recuentos del ciclo de vida de la sesión. |
shared_blks_hit / shared_blks_read |
LONG | Actividad de caché de búfer compartido. |
xact_commit / xact_rollback |
LONG | Transacciones confirmadas y reviertes. |
database_gauges
| Columna | Tipo | Description |
|---|---|---|
datid / datname |
LONG/STRING | Identificador y nombre del objeto de la base de datos. |
numbackends |
LONG | Número actual de conexiones a esta base de datos. |
size |
LONG | Tamaño en disco de la base de datos. |
oldest_frozen_xid_age / oldest_mxid_age |
LONG | Identificador de transacción y antigüedad del identificador multixact de la fila desfrozen más antigua. Los valores ascendentes son la señal más temprana de vacío que cae atrás, bien antes de que el hinchazón se vea en el tamaño de la tabla. |
Limitaciones
Note
Las contraseñas se tachan cuando se captura una declaración, por lo que una capturada CREATE ROLE lee PASSWORD '***'. La redacción depende de detectar la contraseña en la instrucción, y una declaración mal formada puede pasar desapercibida.
Azure Databricks recomienda roles OAuth, que autentican las identidades de Azure Databricks con tokens y no dejan contraseña para escribir.
Se presentan las siguientes limitaciones:
COPYLas operaciones no se capturan en el historial del plan de consulta.Una consulta ejecutada dentro de una función o procedimiento PL/pgSQL no se captura en la telemetría de nivel de consulta a menos que también se ejecute como una instrucción de nivel superior. De forma predeterminada, el seguimiento de instrucciones propias de Postgres solo cuenta las instrucciones de nivel superior.
Las ramas y endpoints aparecen en telemetría e insights por ID interno (por ejemplo,
br-odd-mud-y2icrn1h), no por un nombre de visualización como "production". Cruza el ID en la interfaz de Lakebase si debes confirmar a qué rama o endpoint se refiere una fila de insight o tabla.Las GUC que habilitan la captura de telemetría podrían no propagarse automáticamente a una instancia de cálculo existente. Si la telemetría no aparece después de activar la vista previa, conéctate al proyecto y comprueba:
SHOW neon_monitor.log_capture_enabled; SHOW databricks.o11y_exporter_enabled;Ambos deben devolver
on. Si cualquiera de los dos devuelveoff, reinicie el extremo de proceso.
Configuraciones heredadas de observabilidad
Antes de que la telemetría pasara a las tablas del sistema, podías crear una configuración de observabilidad que capturara la telemetría en un catálogo y esquema en tu propio Catálogo de Unity y proporcionara paneles preconstruidos. Las configuraciones existentes siguen funcionando y sus paneles siguen disponibles. Ya no puedes crear nuevas configuraciones de observabilidad, y la captura en tablas de sistema no crea paneles.
Pasos siguientes
- Detectar problemas con Insights: el agente que revisa esta telemetría según un horario.
- Investiga y soluciona problemas con Genie: haz preguntas sobre esta telemetría con tus propias palabras.
- Referencia de la tabla del sistema Lakebase: dónde se sitúan estas tablas entre las demás tablas del sistema.