Wie viele Einsätze können erledigt werden innerhalb einer Transaktion in SQLite?

Ich versuche das einfügen einer großen Menge von Datensätzen (in den Millionen) in eine SQLite-Datenbank. Das Lesen der Daten aus einer stream-Datei (C++). Wenn ich beginne eine Transaktion durchführen alle der Einsätze und dann ein commit der Transaktion, bekomme ich nur ein sehr kleiner Prozentsatz der Datensätze tatsächlich eingefügt in meine Datenbank.

Diejenigen, die eingefügt sind, scheinen Zufall -- ich kann nicht wirklich sehen, jedes Musters, für welche bekomme eingefügt werden und welche ausgelassen werden. Allerdings, wenn ich zu Begehen und dann starten Sie die Transaktion wieder nach so etwa 2000 Einsätze, ich don ' T haben dieses problem und alle Datensätze eingefügt werden, obwohl der Prozess ist viel langsamer. So...

Gibt es eine strikte Grenze, wie viele Einsätze können erledigt werden innerhalb einer Transaktion? Gibt es eine Möglichkeit, diese Begrenzung ändern?

  • Habe in dieser Angelegenheit. Nur geht das hier posten für die Nachwelt. Wenn Sie Begegnung diese, sollten Sie zuerst versuchen, batch-nur 1k-2k-Wendeplatten pro Transaktion um zu sehen, ob dies tatsächlich das Problem.
  • Ich habe das gleiche problem, Sie brauchen seperate 100 items für jede Transaktion.
InformationsquelleAutor Tricky | 2011-08-26
Schreibe einen Kommentar