2010-12-07 14 views
4

Ich habe drei große MySQL-Tabellen. Sie nähern sich 2 Millionen Datensätzen. Zwei der Tabellen sind InnoDB und sind derzeit etwa 500 MB groß. Die andere Tabelle ist MyISAM und ist ungefähr 2.5 GB.Wie beschleunigt man MySQL INSERTs/UPDATEs?

Wir führen ein Import-Skript von FileMaker aus, um Datensätze in diese Tabellen einzufügen und zu aktualisieren, aber in letzter Zeit ist es sehr langsam geworden - nur ein paar hundert Datensätze pro Stunde eingefügt.

Was kann ich tun, um die Leistung zu erhöhen, damit Einfügungen und Aktualisierungen schneller erfolgen?

+1

Benötigen Sie weitere Informationen über das 'Importskript von FileMaker zum Einfügen und Aktualisieren'? Ist dies ein FileMaker-Skript (langsam)? Sind nicht gespeicherte FileMaker-Berechnungen beteiligt (langsam)? Und wie spricht FileMaker mit MySQL? – Ted

+0

mögliche Duplikate von [Wie MySQL INSERT und UPDATE Leistung zu verbessern?] (Http://stackoverflow.com/questions/2367229/how-to-improve-mysql-insert-and-update-performance) – hakre

Antwort

0

Es stellt sich heraus, der Grund für die Langsamkeit war von der FileMaker Seite der Dinge. Das Exportieren der FileMaker-Datensätze in eine CSV-Datei und das Ausführen von INSERT/UPDATE-Befehlen führte zu einer sehr schnellen Ausführung.

2

Für INSERT könnte es mit den Indizes zu tun haben, die Sie für die Tabellen definiert haben (sie müssen nach jedem INSERT aktualisiert werden). Könnten Sie mehr Informationen über sie veröffentlichen? Und gibt es Trigger auf den Tischen?

Für UPDATE ist es eine andere Geschichte, es könnte sein, dass das Rekord-Update nicht langsam ist, aber das Finden der Aufzeichnung ist langsam. Könntest du versuchen, das UPDATE in ein SELECT zu ändern und zu sehen, ob es noch langsam ist? Wenn ja, sollten Sie Ihre Indizes untersuchen.

2

Für die Innodb-Tabelle, wenn es ein akzeptables Risiko ist, würde ich erwägen, die innodb_flush_log_at_trx_commit Ebene zu ändern. Einige weitere Details in this blog post, zusammen mit einigen weiteren Innodb Tuning-Zeigern.

Bei beiden Motoren kann die Dosierung INSERT zusammen die Dinge bis zu einem gewissen Grad beschleunigen. Siehe doc.

Welche MySQL-Version verwenden Sie? Es gab viele Verbesserungen mit der neuen InnoDB "Plugin" Engine und dem gleichzeitigen Betrieb von Servern mit mehreren Prozessoren.

+0

+1 für Batching, Wenn du das nicht schon machst, hilft es sehr. – thomaspaulb

2

Ist die Abfrage langsam, wenn sie auf MySQL über die Befehlszeile ausgeführt wird?

Wenn Sie den Script-Schritt Execute SQL von FileMaker verwenden, wird nach jedem Aufruf eine Verbindung hergestellt und getrennt, was zu großen Verlangsamungen bei der Ausführung einer großen Anzahl von Abfragen führt. Wir haben Kunden dazu veranlasst, zu unserem JDBC plugin (Haftungsausschluss für Eigenwerbung) zu wechseln, um dies zu vermeiden, was zu erheblichen Beschleunigungen führt.