Zní to jako buď
- Nevyváženost indexu v průběhu času
- Fragmentace disku
- Interní fragmentace datových souborů innodb
Můžete zkusit analyze table foo
který nezabere zámky, jen pár indexových ponorů a trvá několik sekund.
Pokud to nevyřeší, můžete použít
mysql> SET PROFILING=1;
mysql> INSERT INTO foo ($testdata);
mysql> show profile for QUERY 1;
a měli byste vidět, kde trávíte většinu času.
Innodb zjevně funguje lépe, když jsou vložky provedeny v pořadí PK, je to váš případ?