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

Optimieren von MySQL-Einfügungen zur Verarbeitung eines Datenstroms

Wenn Ihre Daten nicht sofort in die Datenbank müssen, können Sie Ihre Einfügungsdaten irgendwo zwischenspeichern und dann eine größere Einfügungsanweisung ausgeben, z. B.

Einfügen in Tabellenname (x, y, z) Werte (x1, y1, z1), (x2, y2, z2), ... (xN, yN, zN) bei doppelter Aktualisierung ...;

Um es klar zu sagen, würde ich eine Liste der ausstehenden Einsätze führen. In diesem Fall eine Liste von (x,z,y)-Tripletts. Sobald Ihre Liste einen Schwellenwert (N) überschreitet, generieren Sie die Insert-Anweisung und geben sie aus.

Ich habe keine genauen Timing-Zahlen für Sie, aber diese erhöhte Leistung etwa um das 10-fache im Vergleich zum Einfügen jeder Zeile einzeln.

Ich habe auch nicht mit dem Wert von N gespielt, aber ich fand, dass 1000 gut funktioniert. Ich gehe davon aus, dass der optimale Wert von Hardware- und Datenbankeinstellungen beeinflusst wird.

Hoffe, das hilft (ich benutze auch MyIsam).