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

Calcular la tasa de reversión de transacciones de la base de datos

Compare las transacciones confirmadas y revertidas por servicio y al mismo tiempo preserve las categorías de error, la duración y las cuentas afectadas.

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é servicios revierten una proporción inusual de transacciones de bases de datos?

Una reversión puede ser una respuesta de simultaneidad esperada o un error visible para el usuario. La medición de su tasa por servicio y base de datos identifica dónde la política de transacciones de aplicaciones merece una revisión más detallada.

Contrato de evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampHora de transacción del terminal en UTC.
transaction_idUtf8Identificador generado por la aplicación para una transacción lógica.
serviceUtf8Aplicación o trabajador propietario de la transacción.
database_nameUtf8Nombre de la base de datos lógica aprobada.
statusUtf8comprometido o rolled_back.
error_typeUtf8Categoría de reversión controlada como punto muerto o serialization_failure.
duration_msFloat64Duración de la transacción lógica de un extremo a otro.
account_idUtf8Identificador de cliente o inquilino aprobado utilizado para el análisis de impacto.
environmentUtf8Entorno de implementación.
DataFusionSQL

Copiar la consulta

sql
SELECT
  service,
  database_name,
  COUNT(*) AS transactions,
  SUM(CASE WHEN status = 'rolled_back' THEN 1 ELSE 0 END) AS rollbacks,
  100.0 * SUM(CASE WHEN status = 'rolled_back' THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS rollback_rate_pct,
  COUNT(DISTINCT CASE
    WHEN status = 'rolled_back' THEN account_id
    ELSE NULL
  END) AS affected_accounts,
  AVG(duration_ms) AS average_duration_ms
FROM database_transaction_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
  AND environment = 'production'
GROUP BY service, database_name
HAVING COUNT(*) >= 10
ORDER BY rollback_rate_pct DESC, transactions 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

Tasa de reversión de transacciones por servicio

Checkout tiene la tasa de reversión más alta y el mayor número de cuentas afectadas.

servicedatabase_nametransactionsrollbacksrollback_rate_pctaffected_accountsaverage_duration_ms
checkout-apiapp_production123253290
billing-workerbilling_production1218,331275
catalog-apicatalog_production12000107,5

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

Transaction rollback rate by service: gráfico estático de valores sintéticos de rollback_rate_pct del resultado del ejemplo Calculate Database Transaction Rollback Rate
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, reproducible 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. 1El numerador cuenta las transacciones revertidas del terminal, no todos los reintentos.
  2. 2Las cuentas afectadas añaden contexto al cliente sin cambiar el denominador de la transacción.
  3. 3Un error_type controlado debe examinarse por separado para distinguir los reintentos de serialización esperados de los defectos de la aplicación.

Casos extremos para decidir

  • Una operación lógica puede reintentar varias transacciones. Mantenga un ID de flujo de trabajo si también necesita el resultado del usuario final.
  • Las transacciones de solo lectura pueden tener una base diferente y deben segmentarse cuando sea relevante.
  • No registre parámetros de declaración, cadenas de conexión ni mensajes de error sin restricciones.

Panel recomendado

  • Barras: rollback_rate_pct por servicio
  • Tendencia acumulada: confirmaciones y reversiones a lo largo del tiempo
  • Tabla: revertir error_type por versión y recuento de cuentas afectadas

Guía de alerta

Alerte sobre un aumento sostenido de la tasa de reversión con un volumen de transacciones significativo y luego separe los errores de simultaneidad reintentables de las fallas finales.

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