Un deadlock ocurre cuando dos (o más) transacciones cada una sostiene un bloqueo que la otra necesita, de modo que ninguna puede proceder — quedan atrapadas esperándose mutuamente indefinidamente. Las bases de datos detectan deadlocks y los resuelven abortando una transacción (la "víctima"), que debe reintentar. Entender las causas y la prevención es importante para aplicaciones concurrentes.
Cómo ocurre un deadlock
Transaction A: locks row 1, then wants row 2
Transaction B: locks row 2, then wants row 1
→ A waits for B (to release row 2), B waits for A (to release row 1) → DEADLOCK
Neither can proceed; they're waiting on each other in a cycle.
