[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Evitar deadlock en mysql



El Wed, 18 Nov 2015 18:24:30 +0100, Maykel Franco escribió:

> El día 18 de noviembre de 2015, 17:29, Camaleón <noelamac@gmail.com>
> escribió:
>> El Wed, 18 Nov 2015 17:07:35 +0100, Maykel Franco escribió:
>>
>>> Buenas, he estado revisando las estadísticas de innodb de alguno de
>>> nuestros servidores y me he encontrado con deadlocks en uno de
>>> ellos...

(...)

>>> Mi pregunta es, de la parte de sistemas hay alguna forma de poder
>>> evitarlo? Creo que la solución pasa por arreglarlo prográmaticamente,
>>> si detecta el error del deadlock, reintentarlo otra vez.
>>>
>>> Deadlock se produce cuando una transaccion espera por los recursos
>>> utilizados por otra transacción que a su vez espera por los recursos
>>> de otra.
>>>
>>> Consejos?
>>
>> Pregunta a Google :-)
>>
>> How to debug InnoDB lock waits
>> http://www.xaprb.com/blog/2007/09/18/how-to-debug-innodb-lock-waits/
> 
> Lo estoy monitorizando con pt-deadlock-logger, guardo los deadlock en
> bbdd, también se pueden guardar en log.
> 
> Necesito primero saber por qué es para poder solucionarlo.

¿Cómo que "por qué es"? :-)

Tú mismo has dicho por qué se produce (espera de recursos para formalizar 
una transacción) y como ya has leído, esas situaciones son inevitables 
(además de no ser exclusivas de las BBDD). Cuando un proceso está 
esperando recursos es porque no los tiene disponibles (llámese ciclos de 
CPU, memoria, escritura en disco...). 

Piensa en redimensionar el sistema (hardware/software) que usas como 
servidor de BBDD, cambiar el tipo/paradigma de BBDD (relacional → nosql), 
reducir el tamaño de las transacciones (menor carga de datos, consultas 
más ágiles), o como bien dices, cambiar el API/sistema de consulta o 
gestión actual de la BBDD, etc...

Saludos,

-- 
Camaleón


Reply to: