Tabla de Contenidos
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
Iddel 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_bdpor 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
KILLrequieren el privilegioSUPERoPROCESS. - 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.