On dirait que c'est soit
- Déséquilibrage de l'index dans le temps
- Fragmentation du disque
- Fragmentation des fichiers de données innodb internes
Vous pouvez essayer analyze table foo
qui ne prend pas de verrous, juste quelques plongées d'index et prend quelques secondes.
Si cela ne résout pas le problème, vous pouvez utiliser
mysql> SET PROFILING=1;
mysql> INSERT INTO foo ($testdata);
mysql> show profile for QUERY 1;
et vous devriez voir où la plupart du temps est passé.
Apparemment, innodb fonctionne mieux lorsque les insertions sont effectuées dans l'ordre PK, est-ce votre cas ?