Ich benutze derzeit Apache Derby als temporäre lokale Datenbank für meine Anwendung und ich hätte gerne einige Tipps, wie ich die INSERT-Leistung optimieren kann.Apache Derby & Java - Optimierung von Einfügungen
Wenn die Anwendung gestartet wird, liest es Datensätze aus einer CSV-Datei ein - das könnten Millionen, aber wahrscheinlicher Hunderttausende sein. Sobald sie verarbeitet sind, fasst eine SELECT-Abfrage am Ende die Informationen zusammen.
Es dauert derzeit ca. 1 Minute, um 6000 Datensätze einzufügen. Es gibt 3 Tabellen, 2 von ihnen speichern einzigartige Daten, und man ist eine Lookup-Tabelle zwischen den beiden - es sieht aus wie folgt:
CREATE TABLE table1
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 VARCHAR(40))
CREATE TABLE table2
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 VARCHAR(100),
field2 INT,
field3 VARCHAR(40))
CREATE TABLE table1table2lookup
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 INT NOT NULL,
field2 INT NOT NULL)
ich zur Zeit parametrisiert verwenden PreparedStatements und Dosiersysteme versuchen die erhöhen Geschwindigkeiten.
Ich habe auch ausgeschaltet auto commit Modus, so dass ich nur auf Bulk-einfügen begehen.
Haben Sie versucht, den integrierten CSV-Dateiimport von Derby zu verwenden? Siehe http://stackoverflow.com/a/2339690/193453 –