====== 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.