mysql Blocco del timeout di attesa superato; prova a riavviare la transazione


26

stiamo eseguendo l'applicazione Java, in esecuzione da secoli, il back-end è db è MySQL, recentemente aggiornato a mysql 5.6. Tutto funzionava bene, la settimana scorsa ha iniziato a ricevere questo errore. È stato superato il timeout di blocco; prova a riavviare la transazione che sembra non smettere mai di terminare, non so cosa fare con questo errore per interrompere. perché si sta verificando all'improvviso

Risposte:


29

È possibile impostare la variabile innodb_lock_wait_timeout = 100 per il tempo di blocco su 100 sec.

mysql> set innodb_lock_wait_timeout=100;

Query OK, 0 rows affected (0.02 sec)

mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 100   |
+--------------------------+-------+

La transazione che è timeout, prova a bloccare la tabella che è trattenuta da un altro processo. e la variabile di timeout impostata con un numero limitato di secondi. quindi mostra errore. Puoi vedere più stato dal comando.

SHOW ENGINE INNODB STATUS\G 

Puoi vedere l'elenco delle tabelle bloccate per-

 show open tables where in_use>0;

Ora vedi il thread che sta usando questa tabella

  show full processlist;

ora puoi uccidere quel thread o aspettare di completarlo.



Grazie per queste informazioni, ma come si può arrivare alla radice del problema quando continuano a verificarsi blocchi, anche su tabelle molto semplici con piccoli aggiornamenti (come aumentare o aggiornare un singolo campo).
Wouter,

-1

Se si utilizza la versione MySQL precedente alla 5.0 non è possibile modificare la variabile anche per la sessione o l'ambito globale. La soluzione migliore è acquisire la query ed eseguirla dopo che il traffico è lento.


2
OP dice che stanno usando 5.6, che (presumo) sia 5.0 o superiore.
RDFozz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.