Nunca realices consultas sin un tiempo de espera. Una sola consulta maliciosa o pico de carga puede provocar paradas o inactividad de la app sin ellos. Pensemos por qué. Pensemos en el caso en que una consulta de larga duración se introduce inadvertidamente en nuestra aplicación. La base de datos normalmente solo procesa consultas de corta duración (10 ms o menos) y de repente tenemos una nueva consulta que tarda 1000 ms por ejecución. Esto no solo consumirá recursos, sino que también aumentará el número de transacciones simultáneas. O bien cumplimos los límites de conexión, límites de transmisión, o usamos el 100% de la CPU / IOPS de la base de datos. Ahora considera el mismo escenario, pero colocamos un timeout de 250 ms en cada transacción (lado de la base de datos), con lógica de reintentos de retroceso exponencial + jitter (lado de la app). Ahora hemos limitado el radio de explosión de cualquier consulta individual. Las consultas de larga duración acabarán desaparecidas, y la lógica de retroceso minimiza el riesgo de rebaños atronadores. Al monitorizar estos tiempos de espera, podemos identificar rápidamente la consulta problemática y revertir el cambio.