Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.
Esta página documenta as tabelas que o Lakebase grava no esquema do Catálogo do Unity depois de configurar a observabilidade de um projeto. Insights e Genie leem esses mesmos dados e, como eles estão em seu próprio Catálogo do Unity, você pode consultá-los diretamente com qualquer ferramenta Azure Databricks.
Note
Esse é um recurso Beta. Os nomes de tabela e coluna podem ser alterados antes da disponibilidade geral.
O que é capturado
Lakebase captura os sinais que um DBA experiente procuraria, aterrissando em um punhado de tabelas que você pode consultar diretamente depois que elas são exportadas:
| O que é capturado | Onde ele aterrissa |
|---|---|
| Sessões ativas e eventos de espera |
active_session_history, wait_event_counters |
| Planos de consulta e estatísticas de execução por consulta |
plan_history, pg_stat_statements_counters |
| Alterações de esquema: o que mudou, quando e por quem | ddl_history |
| Estatísticas do banco de dados: tamanho, linhas lidas e modificadas e contagens de sessão |
database_counters, database_gauges |
| Uso de recursos de computação: CPU, memória, cache, conexões |
compute_counters, compute_gauges |
| Mensagens de log brutas do Postgres, incluindo o erro por trás de uma falha | postgres_logs |
Insights e Genie leem esses dados para fundamentar suas respostas no que realmente aconteceu no seu banco de dados, e as mesmas tabelas alimentam os painéis de observabilidade prontos. O restante desta página documenta cada coluna de cada tabela.
Colunas comuns a cada tabela
Cada tabela abaixo inclui essas colunas, que identificam de onde veio uma linha:
| Coluna | Tipo | Description |
|---|---|---|
project_id |
STRING | O projeto Lakebase do qual a linha veio. |
branch_id |
STRING | O branch da qual a linha veio. |
endpoint_id |
STRING | O ponto de extremidade de computação do qual a linha veio. |
compute_id |
STRING | A instância de computação específica. Isso muda quando uma computação é dimensionada para zero e é retomada. |
ts |
TIMESTAMP | Quando a linha foi gravada. |
compute_mode |
STRING | O modo da computação no momento, por exemplo, leitura-gravação ou somente leitura. |
Tabelas com nomes que terminam _counters também incluem uma previous_ts coluna, marcando o início do intervalo em que os valores de uma linha foram acumulados. Esses são valores cumulativos para esse intervalo, não leituras pontuais. As tabelas que _gauges terminam são leituras pontuais e não têm .previous_ts
As tabelas abaixo listam apenas as colunas além dessas comuns.
Atividade de sessão
Um instantâneo de cada back-end ativo, amostrado continuamente. Esse é o mesmo padrão que o AWS Performance Insights ou o ASH (Histórico de Sessão Ativa) da Oracle: se uma sessão estiver fazendo alguma coisa, incluindo esperar, ela aparecerá aqui.
active_session_history
| Coluna | Tipo | Description |
|---|---|---|
sample_seq |
LONG | Posição ordinal deste exemplo dentro de seu lote. |
pid |
LONG | A ID do processo do back-end. |
datid |
LONG | A ID do objeto do banco de dados. |
userid |
LONG | A ID do objeto da função de conexão. |
queryid |
LONG | Identifica a consulta que está sendo executada. Corresponde queryid em pg_stat_statements_counters. |
wait_event_info |
LONG | Codificação interna do evento de espera. |
wait_event_type |
STRING | A categoria do evento de espera, por exemplo Timeout ou Lock. |
wait_event |
STRING | O evento de espera específico, por exemplo PgSleep. |
backend_state |
LONG | O estado do back-end, por exemplo, ativo ou ocioso. |
backend_type |
LONG | O tipo de processo de back-end. |
xact_age_ms |
LONG | Há quanto tempo a transação atual está aberta. |
query_age_ms |
LONG | Há quanto tempo a consulta atual está em execução. |
blocking_pid |
LONG | O PID de uma sessão bloqueando esta, se houver. |
leader_pid |
LONG | O PID do líder de consulta paralela, se esse back-end for um trabalho paralelo. |
flags |
LONG | Sinalizadores de status internos. |
plan_fingerprint |
LONG | Links para uma forma de plano específica em plan_history. |
appname_hash |
LONG | Um hash do nome do aplicativo de conexão. |
Eventos de espera
Contagens de eventos de espera e tempo agregados, complementando a exibição por exemplo em active_session_history.
wait_event_counters
| Coluna | Tipo | Description |
|---|---|---|
wait_event_id |
LONG | Codificação interna do evento de espera. |
wait_class_name |
STRING | A categoria do evento de espera. |
wait_event_name |
STRING | O evento de espera específico. |
wait_event_count |
LONG | Quantas vezes esse evento de espera ocorreu no intervalo. |
wait_event_time |
DOUBLE | Tempo total gasto nesse evento de espera durante o intervalo. |
Planos de consultas
Um registro por execução de planos de consulta, incluindo o plano completo e estatísticas de armazenamento específicas de Neon. Esta é a tabela mais detalhada e, normalmente, onde uma investigação de consulta lenta acaba.
plan_history
| Coluna | Tipo | Description |
|---|---|---|
row_position |
LONG | Posição ordinal dessa linha dentro de seu lote. |
analyze_enabled |
BOOLEAN | Se o plano inclui estatísticas de execução reais (EXPLAIN ANALYZE), não apenas estimativas. |
buffers_enabled |
BOOLEAN | Se o plano inclui estatísticas de uso de buffer. |
query_hash |
STRING | Hash identificando o texto da consulta. |
queryid |
LONG | Identifica a consulta. Corresponde queryid em pg_stat_statements_counters e active_session_history. |
duration_ms |
DOUBLE | Quanto tempo a consulta levou para ser executada. |
total_cost |
DOUBLE | O custo estimado do planejador para a consulta. |
plan_rows |
LONG | A contagem de linhas estimada do planejador. |
actual_rows |
LONG | A contagem real de linhas retornada. |
plan_fingerprint |
LONG | Identifica essa forma de plano específica. Corresponde plan_fingerprint em active_session_history. |
lock_wait_time_ms |
DOUBLE | Tempo gasto aguardando bloqueios. |
planning_time_ms |
DOUBLE | Tempo gasto planejando a consulta, separado da execução. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | Atividade de cache de buffer compartilhado para essa execução. |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | Atividade de buffer local para tabelas temporárias. |
temp_blks_read / temp_blks_written |
LONG | Atividade de arquivo temporário, por exemplo, de uma classificação ou hash grande. |
neon_getpage_count |
LONG | Número de solicitações de página enviadas para o pageserver. |
neon_file_cache_hits |
LONG | Número de páginas atendidas do cache de arquivos local em vez do pageserver. |
neon_getpage_wait_us |
LONG | Tempo gasto aguardando solicitações de páginas, em microssegundos. |
backend_pid |
LONG | A ID do processo de back-end que executou essa consulta. |
lock_wait_count |
LONG | Número de vezes que essa execução esperou em um bloqueio. |
userid / dbid |
LONG | As IDs de objeto da função de conexão e do banco de dados. |
query_text |
STRING | O texto da consulta. |
plan_json |
STRING | O plano de consulta completo, como JSON. |
usename / datname |
STRING | Os nomes da função de conexão e do banco de dados. |
application_name / client_addr |
STRING | O nome do aplicativo de conexão e o endereço do cliente. |
wait_events |
STRING | Eventos de espera observados durante essa execução. |
parameters |
STRING | Associar parâmetros usados na consulta, se houver. |
blocking_pids |
STRING | PIDs de sessões que bloquearam essa execução, se houver. |
neon_branch_id / neon_endpoint_id / neon_timeline_id |
STRING | Identificadores internos do Neon para o branch, o ponto de extremidade e a linha do tempo. |
cpu_user_time_ms / cpu_sys_time_ms |
DOUBLE | Tempo de CPU consumido por essa execução, dividido em tempo de usuário e sistema. |
voluntary_csw / involuntary_csw |
LONG | O contexto muda durante essa execução. |
trace_id / span_id / trace_flags / service_name |
CADEIA DE CARACTERES/CADEIA DE CARACTERES/LONGA/CADEIA DE CARACTERES | Identificadores de rastreamento no estilo OpenTelemetry, se a consulta fosse parte de uma solicitação rastreada. |
timeline_id |
LONG | Identificador de linha do tempo interno. |
truncated |
BOOLEAN | Se os dados dessa linha (por exemplo, um plano grande) foram truncados antes de serem gravados. |
Estatísticas de consulta
Estatísticas agregadas por consulta, provenientes da extensão padrão pg_stat_statements .
pg_stat_statements_counters
| Coluna | Tipo | Description |
|---|---|---|
userid / dbid |
LONG | As IDs de objeto da função de conexão e do banco de dados. |
queryid |
LONG | Identifica a consulta. Corresponde queryid em plan_history e active_session_history. |
toplevel |
BOOLEAN | Se essa linha é para uma instrução de nível superior, em vez de uma aninhada dentro de uma função ou procedimento PL/pgSQL. Consulte a limitação de PL/pgSQL. |
query |
STRING | O texto da consulta. |
calls |
LONG | Número de vezes que essa consulta foi executada no intervalo. |
plans |
LONG | Número de vezes que essa consulta foi planejada no intervalo. |
rows |
LONG | Total de linhas retornadas ou afetadas. |
total_exec_time / total_plan_time |
DOUBLE | Tempo total gasto executando e planejando essa consulta no intervalo. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | Atividade de cache de buffer compartilhado. |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | Atividade de buffer local para tabelas temporárias. |
temp_blks_read / temp_blks_written |
LONG | Atividade temporária de arquivo. |
wal_bytes / wal_fpi / wal_records |
LONG | Volume de log de gravação antecipada gerado por essa consulta. |
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time |
Misturado | Estatísticas de compilação JIT (just-in-time), se JIT foi usado para essa consulta. |
Alterações feitas no esquema
Alterações de esquema: o que mudou, quando e por quem. É isso que o Genie lê para rastrear um incidente até uma alteração de esquema, seja de uma implantação ou de uma edição manual.
ddl_history
| Coluna | Tipo | Description |
|---|---|---|
row_position |
LONG | Posição ordinal dessa linha dentro de seu lote. |
command_tag |
STRING | O tipo de comando DDL, por exemplo ALTER TABLE. |
object_type / object_name |
STRING | O tipo e o nome do objeto que foi alterado. |
schema_name |
STRING | O esquema Postgres ao qual o objeto pertence. |
query_text |
STRING | A instrução DDL completa. |
duration_ms |
DOUBLE | Quanto tempo a instrução DDL levou para ser executada. |
userid / usename |
LONG/STRING | A ID e o nome do objeto da função de conexão. |
application_name |
STRING | O nome do aplicativo de conexão. |
backend_pid |
LONG | A ID do processo de back-end que executou a instrução. |
dbid |
LONG | A ID do objeto do banco de dados. |
search_path |
STRING | O caminho de pesquisa da sessão no momento. |
ddl_json |
STRING | Uma representação estruturada e analisada da instrução DDL. |
Note
A captura de DDL tem uma lacuna real: uma alteração feita em torno de uma retomada de computação de escala para zero pode ser perdida. Se uma alteração de esquema não aparecer aqui mesmo que você saiba que aconteceu, esse é o motivo mais provável. Confira Limitações.
Logs do Postgres
Mensagens de log brutas do Postgres, incluindo o erro específico por trás de uma falha.
postgres_logs
| Coluna | Tipo | Description |
|---|---|---|
sample_seq |
LONG | Posição ordinal dessa linha dentro de seu lote. |
elevel |
LONG | Codificação de nível de log interno. |
severity |
STRING | A gravidade do log, por exemplo ERROR ou LOG. |
sqlstate |
STRING | O código de erro SQLSTATE do Postgres, por exemplo 42703 , para uma coluna indefinida. |
backend_pid / leader_backend_pid |
LONG | A ID do processo de back-end e o PID do líder de consulta paralela, se aplicável. |
userid / usename |
LONG/STRING | A ID e o nome do objeto da função de conexão. |
datid / datname |
LONG/STRING | A ID e o nome do objeto do banco de dados. |
application_name / client_addr |
STRING | O nome do aplicativo de conexão e o endereço do cliente. |
schema_name / table_name / column_name / constraint_name / datatype_name |
STRING | O esquema, a tabela, a coluna, a restrição ou o tipo de dados referenciado pelo erro, quando o Postgres tem um. |
funcname |
STRING | A função em que o erro ocorreu, se aplicável. |
filename / lineno |
STRING/LONG | O arquivo de origem do Postgres e a linha da qual o erro se originou. |
message |
STRING | O texto da mensagem de log. |
detail / hint / context |
STRING | Detalhes adicionais, uma correção sugerida e o contexto do erro, quando o Postgres os tem. |
internalquery |
STRING | Uma consulta gerada internamente relacionada ao erro, se aplicável. |
statement |
STRING | A instrução que disparou essa entrada de log. |
truncated_mask |
LONG | Indica quais campos, se houver, foram truncados antes de serem gravados. |
Note
Os campos estruturados schema_nametable_namee não column_name são preenchidos para cada tipo de erro. Um erro de análise "coluna não existe" simples (SQLSTATE 42703), por exemplo, deixa-os vazios mesmo que message nomeie a coluna diretamente. Não confie nesses campos que estão sendo preenchidos. Verifique message primeiro.
Métricas de computação
Uso de recursos de nível de computação: CPU, memória, E/S de disco e rede e o LFC (cache de arquivos local), o cache do lado da computação do Lakebase na frente do pageserver.
compute_counters
| Coluna | Tipo | Description |
|---|---|---|
backpressure_throttling_seconds |
DOUBLE | Tempo em que a camada de armazenamento gastou gravações de limitação nesse intervalo. Um valor diferente de zero significa que o volume de gravação excedeu o que o armazenamento pode absorver. |
host_busiest_cpu_seconds / host_cpu_seconds |
DOUBLE | CPU demorada, para o núcleo mais movimentado e no total. |
host_disk_read_bytes / host_disk_written_bytes |
DOUBLE | Volume de E/S de disco. |
host_network_receive_bytes / host_network_transmit_bytes |
DOUBLE | Volume de E/S de rede. |
lfc_evictions / lfc_hits / lfc_misses / lfc_writes |
LONG | Atividade de cache de arquivo local para esse intervalo. |
replica_lfc_redo_evictions |
LONG | Remoções de cache de arquivos locais causadas pela restauração da réplica, se essa computação for uma réplica de leitura. |
compute_gauges
| Coluna | Tipo | Description |
|---|---|---|
current_lsn |
LONG | A posição atual do log de gravação antecipada. |
replica_wal_replay_lsn / replica_wal_receive_lsn |
LONG | Wal reproduzirá e receberá posições, se essa computação for uma réplica de leitura. |
max_connections |
LONG | O limite de conexão configurado. |
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m |
LONG | Tamanho estimado do conjunto de trabalho nos últimos 5, 15 e 60 minutos. |
lfc_size_limit / lfc_allocated / lfc_used |
LONG | Capacidade de cache de arquivos local e uso atual. |
total_size_limit / total_size |
LONG | Capacidade de armazenamento geral e uso atual. |
replication_lag_bytes / replication_lag_time_ms |
LONG/DOUBLE | Retardo de replicação, se essa computação for uma réplica de leitura. |
host_logical_cpus / host_memory_total_bytes |
DOUBLE | A CPU e a memória provisionadas da computação. |
Métricas de banco de dados
Atividade por banco de dados: linhas alteradas, transações, sessões e integridade do vácuo. É aqui que os sinais de bloat de tabela e de vácuo automático residem.
database_counters
| Coluna | Tipo | Description |
|---|---|---|
datid / datname |
LONG/STRING | A ID e o nome do objeto do banco de dados. |
active_time_ms / idle_in_transaction_time_ms / session_time_ms |
DOUBLE | Tempo gasto ativo, ocioso em uma transação aberta e conectado em geral. |
deadlocks |
LONG | Número de deadlocks detectados. |
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated |
LONG | Atividade em nível de linha para o intervalo. |
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed |
LONG | Contagens do ciclo de vida da sessão. |
shared_blks_hit / shared_blks_read |
LONG | Atividade de cache de buffer compartilhado. |
xact_commit / xact_rollback |
LONG | Transações confirmadas e revertidas. |
database_gauges
| Coluna | Tipo | Description |
|---|---|---|
datid / datname |
LONG/STRING | A ID e o nome do objeto do banco de dados. |
numbackends |
LONG | Número atual de conexões com esse banco de dados. |
size |
LONG | O tamanho do banco de dados no disco. |
oldest_frozen_xid_age / oldest_mxid_age |
LONG | ID da transação e idade de ID multixact da linha descongelada mais antiga. Valores crescentes são o sinal mais antigo de vácuo ficando para trás, bem antes que o bloat se torne visível no tamanho da tabela. |
Limitações
Warning
Se você criar funções para conectar aplicativos, uma senha digitada em uma CREATE ROLE ... PASSWORD '...' instrução SQL poderá acabar no histórico de consultas ou instruções. Crie a função pela UI, SDK, API ou CLI, que geram a senha do lado do servidor para que você nunca a digite em texto claro. A interface exibe a senha gerada uma vez. O SDK, a API e a CLI não retornam, então obtenha uma senha depois. Veja Como obter uma senha.
Durante o beta, as seguintes limitações se aplicam:
COPYno momento, as operações não são capturadas no histórico do plano de consulta.Uma consulta executada dentro de uma função ou procedimento PL/pgSQL não é capturada na telemetria de nível de consulta, a menos que também seja executada como uma instrução de nível superior. O próprio rastreamento de instruções do Postgres conta apenas instruções de nível superior por padrão.
Ramificações e pontos de extremidade aparecem na telemetria e nos insights exportados por ID interno (por exemplo,
br-odd-mud-y2icrn1h), não por um nome exibido como "produção". Consulte o ID na interface do Lakebase se precisar confirmar a qual ramificação ou ponto de extremidade um insight ou uma linha da tabela se refere.Os GUCs que habilitam a captura de telemetria podem não se propagar automaticamente para uma computação existente. Se a telemetria não aparecer depois que você configurar a observabilidade, conecte-se ao projeto e verifique:
SHOW neon_monitor.log_capture_enabled; SHOW databricks.o11y_exporter_enabled;Ambos devem retornar
on. Se qualquer uma das opções retornaroff, reinicie o endpoint de computação.
Próximas Etapas
- Encontre e resolva problemas com o Insights: veja esses dados apresentados como diagnóstico, não linhas brutas.
- Investigue com o Gênio: faça perguntas sobre essa telemetria com suas próprias palavras.