====== Depuración de procesos y transacciones en MariaDB ======
Estos comandos ayudan a identificar y finalizar procesos bloqueados o transacciones largas que afectan el rendimiento de MariaDB.
===== Comandos básicos =====
* **Muestra todos los procesos activos** (incluyendo el estado, tiempo de ejecución y consulta exacta). Útil para localizar hilos bloqueados o consultas lentas.
SHOW FULL PROCESSLIST;
* **Finaliza un proceso específico** usando su ID (columna ''Id'' del processlist). Detiene la consulta o transacción que esté ejecutando.
KILL 123;
* **Muestra las transacciones activas dentro de InnoDB**, con detalles como tiempo transcurrido, consulta en curso y estado del bloqueo.
SELECT * FROM information_schema.INNODB_TRX;
===== Comandos complementarios útiles =====
* **Versión resumida del processlist**, ideal para un vistazo rápido sin el texto completo de las consultas.
SHOW PROCESSLIST;
* **Muestra los bloqueos actuales** que InnoDB está gestionando (tablas, filas, esperas). Ayuda a entender cadenas de bloqueo.
SELECT * FROM information_schema.INNODB_LOCKS;
* **Muestra qué transacciones están esperando bloqueos** y cuáles las están reteniendo. Clave para resolver deadlocks.
SELECT * FROM information_schema.INNODB_LOCK_WAITS;
* **Mata todos los procesos de una base de datos específica** (cambia ''nombre_bd'' por el nombre real). Precaución: interrumpe todas las consultas activas en esa BD.
SELECT CONCAT('KILL ', Id, ';') AS comando FROM information_schema.PROCESSLIST WHERE db = 'nombre_bd' AND Command != 'Sleep';
* **Obtiene estadísticas de rendimiento general**, como número de consultas por tipo, tiempo de actividad, etc.
SHOW STATUS LIKE '%onn%';
* **Muestra variables de configuración relacionadas con tiempo de espera y rendimiento** (ej. ''innodb_lock_wait_timeout'').
SHOW VARIABLES LIKE '%timeout%';
===== Ejemplo de flujo de depuración =====
-- 1. Buscar procesos largos
SHOW FULL PROCESSLIST;
-- 2. Identificar un proceso con tiempo > 30 segundos y estado 'updating' o 'locked'
-- Supón que su ID es 456
-- 3. Matar ese proceso
KILL 456;
-- 4. Verificar transacciones huérfanas
SELECT * FROM information_schema.INNODB_TRX\G
===== Notas =====
* Los comandos ''KILL'' requieren el privilegio ''SUPER'' o ''PROCESS''.
* En entornos productivos, revisa siempre qué proceso vas a matar antes de ejecutarlo.
* Si usas réplicas, matar un proceso en el maestro puede afectar a la replicación si no se maneja correctamente.