2012-04-12 8 views
6

Ich bin in eine einfache kleine Tabelle mit 5 Attributen und 1000 Zeilen einfügen.Mysql: Einfügen von Leistung INNODB vs MYISAM

Ich beobachtete, wenn der Motor INNODB ist, nimmt jeder Einsatz 0,03 - 0,05 Sekunden. Ich habe den Motor auf MYISAM geändert, dann sind die Einsätze schneller. es nimmt 0,001 - 0,003 ein.

Was ist das Problem? innodb_flush_log_trx_commit = 1 standardmäßig. Ich war so wie es ist. Hier sind meine innodb Einstellung.

innodb_log_buffer_size : 1MB 
innodb_log_file_size : 5MB 
innodb_buffer_pool_size: 8MB 
innodb_flush_log_trx_commit = 1 

Ich konnte nicht herausfinden, was schief gelaufen ist. Vielen Dank im Voraus. Grüße, UDAY

+0

Sie sollten versuchen, dieses Posting auf http://dba.stackexchange.com/ oder http://serverfault.com –

+0

dank Mikrofon. Ich habe es gemacht. – Uday

+0

Kein Problem Mann, viel Glück. –

Antwort

3

innodb_flush_log_at_trx_commit = 1 bedeutet, dass jede Transaktion in den Protokollpuffer geschrieben wird.

Setzen Sie es auf 0, um eine bessere Leistung zu erzielen, oder versuchen Sie noch besser, alle Einfügungen innerhalb einer Transaktion durchzuführen (vergessen Sie nicht, am Ende zu committen).

Sie können für weitere Details über innodb_flush_log_at_trx_commit und anderen Variablen bei http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html suchen

+0

Hallo Argeman, Hier ist mir wichtig, warum mit dieser Variable auf 1 gesetzt, es zeigt einige sehr sehr niedrige Puts wie 120K Einsätze pro Stunde. Wenn eine Seite diesen Wert auf 2 ändert, könnte dies der Grund für diese schlechtere Leistung sein, wenn dieser Wert auf 1 gesetzt ist. – Uday

+0

Der Grund dafür ist, dass jede Transaktion in den Protokollpuffer geschrieben wird. Wenn Sie nun Einfügungen durchführen, ohne sie manuell in eine Transaktion zu setzen, wird jede Transaktion als Transaktion ausgeführt, was zu einem Schreibvorgang auf die Festplatte führt. Ein Schreiben auf Festplatte dauert etwa 10-50ms auf einer normalen rotierenden Festplatte ... Das könnte besser sein, wenn Sie batteriegepufferten Cache auf einem Raid-Controller oder einer SSD jedoch – Argeman

+0

haben Sie wirklich, wie es einzelne Transaktion auf einem comodity Server dauert 10 - 50 Millisekunden. Ich denke nicht. Niemand kann das akzeptieren. Ich habe diese Leistung nicht auf allen Servern nur auf einigen Servern. – Uday