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... > > ATEST DETECTED DEADLOCK ------------------------ > 2015-11-06 16:00:00 7f61c5aa5700 *** (1) TRANSACTION: > TRANSACTION 1422060913, ACTIVE 0 sec inserting mysql tables in use 1, > locked 1 LOCK WAIT 9 lock struct(s), heap size 1184, 5 row lock(s), undo > log entries 3 MySQL thread id 6495594, OS thread handle 0x7f61c526a700, > query id 110695361 10.100.107.6 stats update INSERT INTO `test`.`test` > (`test`,`test`,`test`,`test`,`test`,`test`) > VALUES (2015,11,6,16,'iOS',1) > *** (1) WAITING FOR THIS LOCK TO BE GRANTED: > RECORD LOCKS space id 17528 page no 219 n bits 368 index `PRIMARY` of > table `test`.`test` trx id 1422060913 lock_mode X insert intention > waiting ***
(...) > test son los datos de mi bbdd. > > 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/ How to deal with MySQL deadlocks https://www.percona.com/blog/2014/10/28/how-to-deal-with-mysql-deadlocks/ Saludos, -- Camaleón

