mysql INNODB fügt sehr langsam ein

mysql INNODB fügt sehr langsam ein

Das Schema der Datenbank ist wie folgt.

 CREATE  TABLE  `items` (  
 `id` mediumint( 8  )  unsigned NOT  NULL  AUTO_INCREMENT ,
 `name` varchar( 45  )  NOT  NULL ,
 `main_type` tinyint( 4  )  NOT  NULL ,
 `rarity` tinyint( 4  )  NOT  NULL ,
 `stack_size` smallint( 6  )  NOT  NULL ,
 `sub_type` tinyint( 4  )  NOT  NULL ,
 `cost` mediumint( 8  )  unsigned NOT  NULL ,
 `ilvl` smallint( 6  )  unsigned NOT  NULL DEFAULT  '0',
 `flavor_text` varchar( 250  )  NOT  NULL ,
 `rlvl` tinyint( 3  )  unsigned NOT  NULL ,
 `final` tinyint( 4  )  NOT  NULL DEFAULT  '0',
 PRIMARY  KEY (  `id`  )  ) ENGINE  = InnoDB  DEFAULT CHARSET  = ascii;

Das Einfügen in diese Tabelle dauert 0,22 Sekunden. Ich weiß nicht, warum das Einfügen einer einzelnen Zeile so lange dauert. Das Lesen geht wirklich sehr schnell, etwa 0,005 Sekunden. Mit der Beispielkonfiguration von hierEntwickler, MySQL, InnoDBes dauert im Durchschnitt ~0,002 bis ~0,005 Sekunden. Warum ein einzelner Einschub mehr als 100x länger dauert, ist mir schleierhaft. Mein Computer ist wie folgt: Betriebssystem: Debian Sid x86-x64, Mysql 5.1, RAM: 4 GB DDR2, CPU 2,0 GHz Dual Core, Festplatte 7200 U/min, 32 MB Cache, 640 GB.

Warum ein SELECT * FROM ; fast 100x so lange dauert itemswie ein INSERT INTO items...;, wird mir nie einleuchten. Es ist immer noch eine kleine Tabelle mit nur 70 Zeilen und hat so lange gedauert, selbst wenn sie 0 Zeilen hatte.

Bearbeiten: Außerdem sind mit dieser Tabelle mehrere andere Tabellen über die ID verknüpft. Es gibt einige, die damit verknüpft sind und bei Update=cascade; und Delete=cascade; ein Häkchen setzen. Ich glaube, das ist hier das größte Problem. Wenn das so ist, kann ich wahrscheinlich hineingehen und es ändern und einzelne Löschungen der verschiedenen kleinen Dinge vornehmen, wenn sie entfernt werden. Die Einfügegeschwindigkeit scheint ~0,2 Sekunden zu betragen, egal, ob ich das Einfügen nur für eine Tabelle mache itemsoder auch für eine andere Tabelle, die eine Fremdschlüsselverknüpfung zur Haupttabelle hat.

Antwort1

Nun, meine erste Vermutung ist, dass Ihr InnoDB wahrscheinlich defekt ist. Sie können überprüfen, ob es keine

  • Trigger, die beim Einfügen langsame Operationen ausführen würden
  • Prozesse laufen, die die Tabelle sperren würden
  • Fremdschlüssel/Einschränkungen, die auf diese Tabelle verweisen

Die beste Möglichkeit, eine Datenbank vollständig auf alles zu prüfen, was solche Probleme verursachen könnte, besteht darin, den Schema-Dump vom Befehl mysqldump zu lesen.

verwandte Informationen