Saltar al contenido
Telemetry
Fiabilidad de la base de datos receta SQL

Mida las transacciones de bases de datos de larga duración

Encuentre clases de transacciones de aplicaciones con colas largas, reversiones y duración de apertura excesiva.

Intermediodatabase_transaction_eventsRevisado 2026-07-28Probado con Apache DataFusion 45.2.0

Revisado por el equipo de producto Telemetry en . Compatibilidad con SQL, contrato de eventos, resultados sintéticos y advertencias operativas. Revisar los estándares y la propiedad

Pregunta respondida

¿Qué clases de transacciones de aplicaciones permanecen abiertas por más tiempo?

Las transacciones largas retienen recursos y pueden amplificar la contención de bloqueos. Los eventos de la aplicación pueden identificar el flujo de trabajo propietario y liberarlo incluso cuando los diagnósticos del lado del servidor siguen siendo necesarios.

Contrato de evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampHora del evento terminal de la transacción.
serviceUtf8Servicio de aplicación propia.
transaction_nameUtf8Clase de transacción lógica estable.
releaseUtf8Lanzamiento de la aplicación.
duration_msFloat64Duración de la transacción desde el inicio hasta la terminal.
outcomeUtf8comprometido, rolled_back o timed_out.
DataFusionSQL

Copiar la consulta

sql
SELECT
  service,
  transaction_name,
  release,
  COUNT(*) AS transactions,
  approx_percentile_cont(duration_ms, 0.95) AS p95_duration_ms,
  MAX(duration_ms) AS max_duration_ms,
  SUM(CASE WHEN outcome <> 'committed' THEN 1 ELSE 0 END) AS unsuccessful
FROM database_transaction_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY service, transaction_name, release
ORDER BY p95_duration_ms DESC, unsuccessful DESC;

Esta consulta de solo lectura se planifica y ejecuta en una tabla escrita vacía con Apache DataFusion 45.2.0. El resultado de la muestra determinista es sintético y se revisa por separado; valide tipos de campos, umbrales y definiciones comerciales con sus propios datos. Lea la metodología de prueba.

Resultado de la consulta

duración de la transacción p95

La finalización de facturas tiene la cola más larga y los resultados más fallidos.

servicetransaction_namereleasetransactionsp95_duration_msmax_duration_msunsuccessful
billinginvoice-finalizeapi-88820680024.10028
projectsmember-importapi-88240421018.2009

Salida de ejemplo sintético. Ejecute la consulta con su propio esquema de eventos y umbrales antes de utilizarla para decisiones operativas.

p95 transaction duration: gráfico estático de valores sintéticos de p95_duration_ms del resultado del ejemplo Measure Long-Running Database Transactions
SVG indexable de la salida del ejemplo determinista. Descárguelo para ver un artículo, un runbook o una revisión de diseño con atribución.

Reproducir el ejemplo

Descargar el accesorio público

El paquete JSON incluye el contrato de evento escrito, illustrative filas de entrada, SQL exacto, resultado esperado, notas de revisión y versión del motor. El CSV contiene el resultado mostrado.

Cómo funciona el SQL

  1. 1La clase de transacción conecta la duración con el propietario de una aplicación.
  2. 2El máximo expone reservas extremas de recursos junto a un percentil estable.
  3. 3Los resultados sin compromiso incluyen reversión y tiempo de espera para una vista completa del terminal.

Casos extremos para decidir

  • Los eventos de terminal que faltan necesitan una unión de inicio a terminal por separado.
  • Los eventos de espera del servidor y los gráficos de bloqueo requieren diagnósticos nativos de la base de datos.
  • No registre declaraciones con valores vinculados.

Panel recomendado

  • Barras: p95_duration_ms por transacción
  • Tendencia: fracasado por lanzamiento
  • Tabla: eventos de transacciones seguras más largos

Guía de alerta

Alerta cuando se agota el tiempo de espera de una transacción crítica o su p95 excede un límite aprobado por el propietario.

Leer configuración de alerta

Pon la receta a trabajar

Instrumentación y guías relacionadas.

Continuar el análisis

Ejecútelo en eventos reales.

Crea una tabla, adapta los campos y guarda el resultado.

Comience gratis, envíe eventos estructurados y utilice el resultado de la consulta como un gráfico, un widget de panel compartido o una entrada de alerta.

Obtén una clave API