Ich muss eine ziemlich große XML-Datei analysieren (variierend zwischen etwa hundert Kilobyte und mehrere hundert Kilobyte), die ich mit Xml#parse(String, ContentHandler)
mache. Ich teste das gerade mit einer 152KB-Datei.Android SQLite-Datenbank: Langsame Einfügung
Während des Parsens füge ich die Daten auch in eine SQLite-Datenbank ein, die ähnliche Aufrufe wie folgt verwendet: getWritableDatabase().insert(TABLE_NAME, "_id", values)
. All dies zusammen benötigt etwa 80 Sekunden für die 152 KB Testdatei (was zum Einfügen von etwa 200 Zeilen führt).
Wenn ich alle INSERT-Anweisungen auskommentiere (aber alles andere belasse, wie das Erstellen von ContentValues
usw.), dauert die gleiche Datei nur 23 Sekunden.
Ist es normal, dass die Datenbankoperationen einen so großen Overhead haben? Kann ich etwas dagegen tun?
alle content auf diese Weise einfügen dauert nur eine Sekunde oder zwei. Danke vielmals! – benvd
Ist es sicher, eine lang laufende Transaktion geöffnet zu haben, die die gesamte Dauer der XML-Parsing-Operation abdeckt und sie dann am Ende festlegt? Oder sollte die Liste der Einfügungen lokal im XML-Parser zwischengespeichert werden und dann eine kurzlebige Transaktion geöffnet und übergeben werden, sobald das Parsing abgeschlossen ist? –
Wrapping meiner 60 Einsätze mit einer Transaktion erhöht die Leistung 10x. Wrapping es mit einer Transaktion und mit einer vorbereiteten Anweisung (SQLiteStatement) erhöht es 20x! – stefs