¿Cómo debo interpretar el "tiempo de bloqueo" dentro del registro de consulta lenta de mysql?

12

Estoy tratando de entender cómo interpretar mejor el tiempo de bloqueo para las consultas que aparecen en nuestro registro de consultas lentas de MySQL.

Por ejemplo, si una consulta de ACTUALIZACIÓN tiene un tiempo de bloqueo de 10 segundos. Supongo que es el tiempo total después de que la consulta de actualización adquiere el bloqueo. Incluso si está esperando que las consultas de selección anteriores se completen pero no ejecuta la acción ACTUALIZAR en sí misma, el reloj debería estar marcando el tiempo ya que está bloqueando todas las consultas SELECT que se han alineado después de la consulta ACTUALIZAR.

¿Y qué hay de los bloqueos de consulta SELECT? ¿Cómo es que algunas consultas seleccionadas tienen tiempos de bloqueo? Es porque hay una consulta ACTUALIZACIÓN que sigue, por lo tanto, están bloqueando una tabla.

Haluk
fuente

Respuestas:

19

En lock_timeel registro de consulta lenta es en realidad la cantidad de tiempo que la consulta pasó esperando para adquirir el bloqueo que necesita ejecutar. Por ejemplo, las UPDATESconsultas necesitan un bloqueo de escritura.

El bloqueo también depende del motor de almacenamiento que esté utilizando en la tabla. Al escribir, InnoDB usará el bloqueo de nivel de fila y solo bloqueará las filas que se están cambiando. MyISAM bloqueará toda la tabla hasta que se complete la actualización / inserción / eliminación.

El bloqueo de toda la tabla para MyISAM es una gran razón por la cual las SELECTconsultas tendrán un tiempo de bloqueo en su registro de consultas lento.

Derek Downey
fuente