Leistung von MySQL-Insert-Anweisungen in Java: Vorbereitete Anweisungen im Batch-Modus im Vergleich zu einzelnen Insert-Anweisungen mit mehreren Werten
Ich entwerfe eineMySQL
Datenbank, die ungefähr 600 Zeileneinfügungen pro Sekunde in verschiedenen InnoDB-Tabellen verarbeiten muss. Meine aktuelle Implementierung verwendet nicht im Stapel vorbereitete Anweisungen. Schreiben Sie jedoch an dieMySQL
Datenbankengpässe und meine Warteschlangengröße nehmen mit der Zeit zu.
Die Implementierung ist in Java geschrieben, ich kenne die aktuelle Version nicht. Es verwendetMySQL
'sJava-Connector. Ich muss mich darum kümmern, zu wechselnJDBC
Morgen. Ich gehe davon aus, dass dies zwei verschiedene Connector-Pakete sind.
Ich habe die folgenden Themen zu diesem Thema gelesen:
Optimieren von MySQL-Inserts für die Verarbeitung eines DatenstromsMyISAM versus InnoDBEinfügen von Binärdaten in MySQL (ohne PreparedStatements)und von der MySQL-Site:
http://dev.mysql.com/doc/refman/5.0/en/insert-speed.htmlMeine Fragen sind:
Hat jemand Ratschläge oder Erfahrungen zu Leistungsunterschieden bei der Verwendung von INSERTs mit vorbereiteten Anweisungen im Stapelmodus im Vergleich zur Verwendung einer einzelnen Anweisung?INSERT
Anweisung mit mehreren WERTEN.
Was sind die Leistungsunterschiede zwischen denMySQL
Java Connector vs.JDBC
. Soll ich den einen oder anderen benutzen?
Die Tabellen dienen Archivierungszwecken und zeigen, dass ~ 90% schreiben und ~ 10% lesen (möglicherweise sogar weniger). Ich benutze InnoDB. Ist das die richtige Wahl gegenüber MyISAM?
Vielen Dank im Voraus für Ihre Hilfe.