Ich habe gerade nach mysql 5.5.20 migriert und hatte ein Performance-Problem mit temporären Tabellen. Ich habe eine gespeicherte Prozedur, die acht von ihnen erstellt, ähnlich wie folgt:
%Vor%Auf Mysql 5.5 hat es Innodb als Standardspeichermodul. Ich war früher auf 5.1 und das war nicht der Fall. Also, es war die Erstellung der Temp-Tabellen mit Innodb. Ich habe dies überprüft, indem ich / tmp betrachtet habe und keine .MYI oder .MYD gesehen habe. Dies dauerte 0,50 Sekunden (oder mehr, die Ausführungszeit prallte überall herum), was lächerlich ist.
Ich habe also die Tabellendefinition so geändert, dass sie "Engine = MyISAM" enthält, und es dauerte 0,00 Sekunden (wie zu erwarten war), nur die 8 temporären Tabellen zu erstellen und zu beenden.
Jeder hat eine Ahnung, warum es in Innodb so lange dauern würde, um diese temporären Tabellen zu erstellen? Vielleicht ist das Erstellen von temporären Tabellen mit der Standard-Speicher-Engine eine Art von großem Nein-Nein?
Ich habe meiner m.cnf nicht viel getan, da ich gerade am Laufen bin. Ich habe die Protokolle von der Standardeinstellung erhöhen .. aber das ist es. Die Konfiguration ist also sofort einsatzbereit.
Danke!
Wenn Sie die Standardkonfiguration verwenden, verwendet mysql einen einzigen Tabellenbereich für alle innodb -Tabellen, weshalb es wahrscheinlich relativ langsam ist, Ihre temporären Tabellen zu erstellen. Ich würde vorschlagen, die Speicher-Engine MEMORY (HEAP) für Ihre temporären Tabellen zu verwenden, wenn genügend Arbeitsspeicher verfügbar ist.
Tags und Links mysql