Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum werden MySQL InnoDB-Einfügungen/-Aktualisierungen in großen Tabellen sehr langsam, wenn es nur wenige Indizes gibt?

Es hört sich so an, als wäre es entweder

  • Index-Ungleichgewicht im Laufe der Zeit
  • Festplattenfragmentierung
  • Interne Innodb-Datendatei(en)-Fragmentierung

Sie könnten analyze table foo versuchen die keine Sperren braucht, nur ein paar Index-Tauchgänge und ein paar Sekunden dauert.

Wenn dies das Problem nicht behebt, können Sie

verwenden
mysql> SET PROFILING=1;
mysql> INSERT INTO foo ($testdata);
mysql> show profile for QUERY 1;

und Sie sollten sehen, wo die meiste Zeit verbracht wird.

Anscheinend funktioniert innodb besser, wenn Einfügungen in PK-Reihenfolge erfolgen, ist dies Ihr Fall?