Notas de Luis

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.
computing/databases/mysql/depuracion.txt · Última modificación: por alfabeto