Det låter som att det är antingen
- Obalans i index över tid
- Diskfragmentering
- Intern innodb-datafil(er) fragmentering
Du kan prova analyze table foo
som inte tar lås, bara några indexdyk och tar några sekunder.
Om detta inte löser det kan du använda
mysql> SET PROFILING=1;
mysql> INSERT INTO foo ($testdata);
mysql> show profile for QUERY 1;
och du bör se var den mesta tiden spenderas.
Tydligen presterar innodb bättre när insättningar görs i PK-ordning, är detta ditt fall?