Tutto ad un tratto (senza alcuna modifica al codice correlato) che stiamo ottenendo gli errori di blocco attraverso il record attivo come ad esempio:Come posso risolvere gli errori di timeout del blocco MySQL con Rails?
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction: UPDATE `items` SET `state` = 'reserved', `updated_at` = '2012-09-15 17:58:21' WHERE `items`.`id` = 248220
e
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction: DELETE FROM `sessions` WHERE `sessions`.`id` = 41997883
Non stiamo facendo le nostre proprie transazioni in entrambe le di questi modelli, quindi le uniche transazioni sono quelle integrate. Non c'è stata un'impennata nel traffico o nel volume delle richieste.
Questi errori sembrano essere quando una "nuova" query tenta di essere eseguita su una tabella bloccata e deve attendere, come possiamo vedere cosa sta aspettando? Come possiamo capire quale parte del nostro codice sta emettendo query che bloccano le tabelle per lunghi periodi di tempo?
Qualche idea su dove possiamo guardare o su come indagare la causa di questo?
Si potrebbe provare l'approccio per disabilitare il blocco del gap in questo modo: innodb_locks_unsafe_for_binlog = 1, tuttavia potrebbe causare alcuni record fantasma. leggi di più [qui] (http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_locks_unsafe_for_binlog) – Yarneo
Qual è il motore DB sottostante? Se il suo INNODB può pubblicare 'show innodb status'? – ethrbunny
SHOW ENGINE INNODB STATUS https://gist.github.com/3758910 – chrishomer