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

Medir la saturación del grupo de conexiones de la base de datos

Mida la utilización promedio del grupo, las esperas de adquisición en cola, los tiempos de espera y la capacidad inactiva por servicio de aplicación.

Principiantedatabase_pool_samplesRevisado 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é grupos de aplicaciones hacen que las personas que llaman esperen una conexión a la base de datos?

Un grupo lleno no es automáticamente malo, pero la utilización sostenida más las llamadas en cola y los tiempos de espera de adquisición son una fuerte señal de que el acceso a la base de datos está retrasando el trabajo de la aplicación.

Contrato de evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampHora de muestra del grupo en UTC.
serviceUtf8Servicio de aplicación propietaria de la piscina.
pool_nameUtf8Nombre del grupo lógico estable.
active_connectionsInt64Conexiones actualmente desprotegidas.
idle_connectionsInt64Conexiones abiertas actualmente inactivas.
max_connectionsInt64Tamaño máximo de grupo configurado.
wait_msFloat64Espera de adquisición de conexión observada para esta muestra.
timed_outBooleanSi la adquisición superó el tiempo de espera del cliente.
environmentUtf8Entorno de implementación.
DataFusionSQL

Copiar la consulta

sql
SELECT
  service,
  pool_name,
  COUNT(*) AS samples,
  100.0 * AVG(active_connections)
    / NULLIF(MAX(max_connections), 0) AS average_utilization_pct,
  SUM(CASE WHEN wait_ms > 0 THEN 1 ELSE 0 END) AS waited_samples,
  100.0 * SUM(CASE WHEN wait_ms > 0 THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS wait_rate_pct,
  AVG(wait_ms) AS average_wait_ms,
  SUM(CASE WHEN timed_out THEN 1 ELSE 0 END) AS timeouts
FROM database_pool_samples
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
  AND environment = 'production'
GROUP BY service, pool_name
HAVING COUNT(*) >= 10
ORDER BY wait_rate_pct DESC, average_utilization_pct 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 espera de adquisición de conexión

Las personas que llaman a las cajas esperan en dos tercios de las muestras y también experimentan tiempos de espera de adquisición.

servicepool_namesamplesaverage_utilization_pctwaited_sampleswait_rate_pctaverage_wait_mstimeouts
checkout-apiprimary1289,17866,67118,752
analytics-apireporting1245433,3312,50

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

Connection acquisition wait rate: gráfico estático de valores sintéticos de wait_rate_pct del resultado del ejemplo Measure Database Connection-Pool Saturation
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. 1La utilización promedio proporciona un contexto de capacidad, pero no se utiliza por sí sola como señal de falla.
  2. 2La tasa de muestra esperada muestra la frecuencia con la que las personas que llaman encuentran competencia incluso cuando la espera es corta.
  3. 3Los tiempos de espera siguen siendo explícitos porque un promedio puede ocultar un conjunto más pequeño de solicitudes que nunca obtienen una conexión.

Casos extremos para decidir

  • La frecuencia de muestreo debe permanecer estable antes de comparar tarifas entre servicios.
  • La concurrencia sin servidor puede crear muchos grupos independientes; incluir una instancia o dimensión de tiempo de ejecución cuando la agregación ocultaría esa forma.
  • El aumento del tamaño del grupo puede trasladar la contención a la base de datos. Verifique la capacidad de la base de datos antes de cambiar el límite de clientes.

Panel recomendado

  • Barras: wait_rate_pct y average_utilization_pct por servicio
  • Tendencia: conexiones activas, inactivas y en espera
  • Estadística: tiempos de espera de adquisición de conexión

Guía de alerta

Alerte cuando la tasa de espera y los tiempos de espera sigan siendo elevados en muestras consecutivas y luego valide la capacidad de la base de datos antes de aumentar el grupo.

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