DAS ofrece dos modos de análisis de interbloqueos para sus bases de datos: el análisis de interbloqueos recientes, que examina el último registro de interbloqueo, y el análisis completo de interbloqueos, que analiza los registros de errores cada hora para rastrear las tendencias de estos eventos.
Los datos de las figuras, incluidos los identificadores de hilos y las sentencias SQL, son únicamente ilustrativos. Utilice sus propios datos y parámetros al ejecutar las operaciones.
Requisitos previos
-
La instancia de destino debe usar uno de los siguientes motores:
-
Análisis de interbloqueos recientes:
RDS MySQL
MySQL autogestionado
PolarDB for MySQL
PolarDB-X 2.0
-
Análisis completo de interbloqueos:
RDS MySQL
PolarDB for MySQL
-
La instancia de destino debe estar conectada a DAS con un estado de conexión Normal Access. Para obtener más información, consulte Connect a database instance to DAS.
-
Debe habilitar Alibaba Cloud Managed Services (anteriormente DAS Economy Edition).
ImportanteAlibaba Cloud Managed Services solo está disponible en regiones específicas. Para obtener más información, consulte Supported databases and regions by edition.
Para habilitar este servicio, consulte Manage Alibaba Cloud Managed Services.
Análisis de interbloqueos recientes
-
Configuración de parámetros: el parámetro
innodb_deadlock_detectdebe estar habilitado en la instancia.NotaEste parámetro se habilita de forma predeterminada. Para comprobarlo, ejecute
SHOW VARIABLES LIKE 'innodb_deadlock_detect'. En algunos tipos de instancia no es posible modificar este parámetro.-
Para modificar los parámetros de la instancia:
En RDS MySQL, consulte Set instance parameters.
En PolarDB for MySQL, consulte Set cluster and node parameters.
-
Análisis de datos: analiza el registro de interbloqueo más reciente que devuelve el comando
SHOW ENGINE INNODB STATUS.
Si ocurrieron varios interbloqueos, cada análisis captura y guarda únicamente el más reciente.
Procedimiento
Inicie sesión en la consola de DAS.
En el panel de navegación izquierdo, haga clic en .
Busque la instancia de destino y haga clic en su identificador para abrir la página de detalles de la instancia.
En el panel de navegación izquierdo, haga clic en Lock Analysis. En la página Lock Analysis, seleccione la pestaña Recent Deadlock Analysis.
-
Haga clic en Create Analysis para iniciar un análisis de interbloqueos recientes.
Una vez finalizado el análisis, la tabla de resultados de la pestaña Recent Deadlock Analysis muestra la hora de generación, la hora de ocurrencia y si se detectó algún interbloqueo. Haga clic en View Details para consultar la información detallada del interbloqueo.
Consulta de detalles
Seleccione un periodo de tiempo para consultar los resultados de las tareas de análisis ejecutadas durante ese lapso.
En la lista de tareas de análisis de interbloqueos recientes, haga clic en View Details dentro de la columna Details.
-
Se abre un panel con los detalles del interbloqueo distribuidos en tres pestañas:
View: muestra un gráfico visual de la relación de interbloqueo, que incluye los nodos de transacción y los bloqueos de registros. Las flechas etiquetadas como lock granted y waiting ilustran la posesión de bloqueos y las relaciones de espera, lo cual forma un ciclo de interbloqueo. Las transacciones revertidas se marcan como "Rolled back". Haga clic en un nodo de transacción para expandir sus detalles, como Session ID, identificador de hilo, tipo de solicitud, identificador de transacción, tabla involucrada, información del bloqueo en espera y el nombre del índice del bloqueo en espera.
List: presenta una comparación lado a lado de las dos transacciones interbloqueadas, con las transacciones revertidas marcadas. Las filas de la tabla incluyen Session ID, identificador de hilo, tipo de solicitud, identificador de transacción, tabla involucrada, bloqueo en espera (nombre del índice y tipo de bloqueo, por ejemplo, X locks rec but not gap waiting), bloqueo retenido (nombre del índice y tipo de bloqueo) y el SQL de la transacción. Puede usar el identificador de hilo o de transacción en la parte inferior para buscar los detalles de la transacción relacionada en SQL Explorer and Audit.
Log: muestra el registro de interbloqueo sin procesar de la sección
LATEST DETECTED DEADLOCKde la salida del comandoSHOW ENGINE INNODB STATUS. Incluye la hora del interbloqueo, las sentencias SQL de las transacciones involucradas, la información del bloqueo retenido (HOLDS THE LOCK) y la información del bloqueo en espera (WAITING FOR THIS LOCK TO BE GRANTED).
Análisis con SQL Explorer and Audit
En el panel de navegación izquierdo de la instancia de destino, haga clic en SQL Explorer and Audit. En la página Audit, haga clic en Enable Advanced Query.
-
Seleccione un intervalo de tiempo que abarque el momento del interbloqueo e introduzca el identificador de hilo obtenido en el análisis de interbloqueos recientes. Así consultará las sentencias SQL que ejecutó esa transacción.
Para la transacción 1 del ejemplo, los resultados de la consulta muestran que el hilo ejecutó tres sentencias SQL:
update students set name=UUID() where id = 2(tiempo de ejecución: 2938.377 ms, tiempo de espera de bloqueo: 1 ms),update students set name=UUID() where id = 3(tiempo de ejecución: 0.002 ms) ybegin. El tiempo de ejecución inusualmente largo de la primera sentencia de actualización indica una espera de bloqueo.Para la transacción 2 (revertida): en la página Audit, establezca el Time range, configure el Thread ID como
195662y luego haga clic en Query. La lista de registros muestra el historial de ejecución SQL de la transacción 2:update students set name=UUID() where id = 3falló con el código de error 1213 (interbloqueo) y tardó 1.40 ms, con un tiempo de espera de bloqueo de 1.152 ms.update students set name=UUID() where id = 2se ejecutó correctamente y tardó 0.20 ms.beginse ejecutó correctamente y tardó 0.18 ms.
Análisis completo de interbloqueos
-
Debe habilitar los parámetros
innodb_deadlock_detecteinnodb_print_all_deadlocks. En una instancia RDS MySQL, también debe establecer el parámetrolog_error_verbosityen 3.NotaEl parámetro
innodb_deadlock_detectse habilita de forma predeterminada. EjecuteSHOW VARIABLES LIKE 'innodb_deadlock_detect'para comprobarlo. En algunos tipos de instancia no es posible modificar este parámetro.-
Para modificar los parámetros de la instancia:
En RDS MySQL, consulte Set instance parameters.
En PolarDB for MySQL, consulte Set cluster and node parameters.
-
Origen de datos: DAS analiza la información de interbloqueos del registro de errores de la instancia cada hora. Con esto genera las tendencias de cantidad de interbloqueos y recopila los detalles de cada evento.
-
Periodo de enfriamiento: si Alibaba Cloud Managed Services está habilitado y DAS detecta que los parámetros obligatorios no están activos, el servicio entra en un periodo de enfriamiento de 12 horas y no ejecuta tareas de análisis. Si habilita los parámetros requeridos durante ese lapso, DAS espera a que termine antes de reprogramar el análisis. Por ejemplo:
Una tarea de análisis a las 11:12 detecta que falta un parámetro obligatorio e inicia un enfriamiento de 12 horas. Después de las 23:12, el análisis completo de interbloqueos reprograma la tarea. Si el parámetro sigue sin habilitarse, comienza otro periodo de 12 horas. Si lo habilita antes de las 23:12, el enfriamiento termina a esa hora. Posteriormente, el análisis se ejecuta cada hora, siempre que el parámetro obligatorio y Alibaba Cloud Managed Services permanezcan habilitados para la instancia.
No se admite el análisis de interbloqueos que incluyen el mensaje "TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION".
Procedimiento
Inicie sesión en la consola de DAS.
En el panel de navegación izquierdo, haga clic en .
Busque la instancia de destino y haga clic en su identificador para abrir la página de detalles de la instancia.
En el panel de navegación izquierdo, haga clic en Lock Analysis. En la página Lock Analysis, seleccione la pestaña Full Deadlock Analysis.
-
Cada hora, el análisis completo de interbloqueos examina automáticamente los registros de errores de la instancia, cuenta los interbloqueos y grafica los datos en el diagrama Deadlock Trend en la parte superior de la página. Seleccione un periodo de tiempo para consultar la tendencia de interbloqueos correspondiente.
La parte superior de la página ofrece botones de selección rápida para Last 1 Day, Last 3 Days y Last 7 Days, además de un selector de intervalo de fechas personalizado. Haga clic en el botón View para actualizar el diagrama de tendencias. Debajo del diagrama aparece una lista de eventos de interbloqueo que muestra el Deadlock Time de cada uno. Haga clic en View Details de un evento específico para consultar más información.
Consulta de detalles
En la lista de interbloqueos del análisis completo, haga clic en View Details dentro de la columna Details.
Se abre un panel con los detalles del interbloqueo distribuidos en tres pestañas: View, List y Log. La pestaña Log contiene el contenido del registro de errores relacionado con el interbloqueo. Las pestañas View y List funcionan igual que en el análisis de interbloqueos recientes. Para obtener más información, consulte Recent deadlock analysis - View details.
Análisis con SQL Explorer and Audit
El procedimiento es el mismo que para el análisis de interbloqueos recientes. Para obtener más información, consulte Recent deadlock analysis - Analyze with SQL Explorer and Audit.