[MySQL] Lock wait time out excedeed
Bonjour à tous !
Je rencontre un soucis sur ma BD MySQL.
Le problème met en jeu 2 tables.
La première :
Code:
1 2 3 4 5 6
|
CREATE TABLE T_TABLE_1 (
TABLE_1_ID INTEGER NOT NULL,
+ plein d'autres champs pas importants ici...
) TYPE=INNODB; |
La seconde
Code:
1 2 3 4 5 6 7
|
CREATE TABLE T_TABLE_2 (
TABLE_2_ID INTEGER NOT NULL,
TABLE_1_ID INTEGER NOT NULL,
+ plein d'autres champs pas importants ici...
) TYPE=INNODB; |
avec bien sur
Code:
1 2 3
|
ALTER TABLE T_TABLE_2 ADD CONSTRAINT cs FOREIGN KEY (TABLE_1_ID)
REFERENCES T_TABLE_1(TABLE_1_ID ) ; |
Voila pour l'archi.
A un moment donné j'ai besoin de faire une requête de ce style :
Code:
1 2 3 4
|
UPDATE T_TABLE_1
SET CHAMP_1 = 'toto'...
WHERE ... |
Et BADABOUM, lock wait time out .
En effet, sur ma table T_TABLE_2 (possédant une foreign key vers T_TABLE_1), je fais à peu prés 20-30 inserts par seconde.
Mon show engine innodb status me donne plus ou moins ça :
Citation:
UPDATE ... MA REQUETE
TRX HAS BEEN WAITING 17 SEC FOR THIS LOCK TO BE GRANTED :
RECORD LOCKS space id 0 page no 72812 n bits 272 index 'PRIMARY' of table 'myDB/t_table_1' trx id 0 17573992 lock_mode X waiting
Quelques variables :
Citation:
innodb_lock_wait_timeout | 20
innodb_table_locks | ON
autocommit | ON
Voila, j'aimerais bien que ma requête d'update passe dans tous les cas...
Je peux pas trop augmenter le innodb_lock_wait_timeout, sinon l'appli va se casser la gu....
Si quelqu'un à une piste pour m'aider...