Bonjour à tous !

Je rencontre un soucis sur ma BD MySQL.

Le problème met en jeu 2 tables.
La première :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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 :
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...