Sé que interbloqueos se producen inevitablemente al utilizar transacciones en Innodb y que son inofensivas si son tratados adecuadamente por el código de la aplicación – «intentar de nuevo», como dice el manual:.

Así que me preguntaba – ¿cómo se puede detectar interbloqueos? ¿Un problema de interbloqueo especiales mysql número de error? Estoy usando la extensión mysqli de PHP si que importa.

Gracias.

Edición: solución encontrada, ver los comentarios

OriginalEl autor | 2009-03-13

7 Comentarios

  1. 15

    «MOSTRAR MOTOR INNODB STATUS» de MySQL, el cliente de línea de Comandos (no es un explorador de consultas) le dará información sobre los interbloqueos.

    Interbloqueos también pueden ser causados por las transacciones no confirmadas (generalmente de errores en el programa) y la persona que ejecuta la transacción no confirmada no ver el problema como que va a estar funcionando bien (a través de sus datos no serán comprometidos).

    Sólo se mostrará la última de interbloqueo.
    hay un montón de salida.. puedo grep para algo para detectarlo?

    OriginalEl autor boz

  2. 5

    Intentar MaatKit. Tiene un interbloqueo registrador.

    Maatkit ha sido absorbidos por el Percona kit de herramientas recientemente. La herramienta se llama pt-estancamiento-logger y antes de mk-estancamiento-logger.

    OriginalEl autor jonstjohn

  3. 5

    Trate de usar MONyog. Habilitar MONyog «de Supervisión de bloqueo» opción para trazar los interbloqueos se informó por INNODB STATUS. MONyog enviará una alerta al usuario cuando un nuevo estancamiento ocurrir.
    Cómo detectar los interbloqueos en Mysql /innodb?

    OriginalEl autor Sandy

  4. 1

    Intentar innotop, se detecta el bloqueo para usted.

    OriginalEl autor

  5. 1

    Si estás en un mac:

    $ brew install percona-kit de herramientas de

    $ pt-estancamiento-logger -uroot-pregunte-pass localhost

    OriginalEl autor Andrei Sura

  6. 0

    Recientemente he creado una muy simple verificación de interbloqueos para la aplicación de una prueba de humo de una web applciation. El código se puede mejorar mucho, pero funciona por ahora. Ver https://dev.mysql.com/doc/refman/8.0/en/innodb-standard-monitor.html para obtener más información sobre la salida de la consulta.

    $status = DB::select("SHOW ENGINE INNODB STATUS")["Status"]??null;
    
    if(strpos($status,"LATEST DETECTED DEADLOCK") !== false)
    {
      trigger_error("LATEST DETECTED DEADLOCK section present in output of SHOW ENGINE INNODB STATUS");
    }
    
    if(strpos($status,"LATEST FOREIGN KEY ERROR") !== false)
    {
      trigger_error("LATEST FOREIGN KEY ERROR section present in output of SHOW ENGINE INNODB STATUS");
    }

    OriginalEl autor Mark Baaijens

Dejar respuesta

Please enter your comment!
Please enter your name here