Nunca ejecutes consultas sin un tiempo de espera. Una sola consulta rebelde o un pico de carga pueden llevar a bloqueos o tiempo de inactividad de la aplicación sin ellos. Pensemos en por qué. Considera el caso en el que se introduce inadvertidamente una consulta de larga duración en nuestra aplicación. La base de datos normalmente procesa solo consultas de corta duración (10 ms o menos) y de repente tenemos una nueva consulta que tarda 1000 ms por ejecución. No solo esto consumirá recursos, sino que aumentará el número de transacciones simultáneas. Alcanzaremos los límites de conexión, límites de transacciones, o utilizaremos el 100% de la CPU / IOPS de la base de datos. Ahora considera el mismo escenario, pero colocamos un tiempo de espera de 250 ms en cada transacción (del lado de la base de datos), con lógica de reintento de retroceso exponencial + jitter (del lado de la aplicación). Ahora hemos limitado el radio de explosión de cualquier consulta única. Las consultas de larga duración serán eliminadas, y la lógica de retroceso minimiza el riesgo de manadas estruendosas. Al monitorear estos tiempos de espera, podemos identificar rápidamente la consulta problemática y revertir el cambio.