# Performance bei Massinserts



## Sanix (27. Apr 2009)

Hallo,
Ich möchte mehrere Millionen Datensätze in eine Datenbank einfügen. Zurzeit mache ich dies mit einzelnen Insert Statements, was sehr inperformant ist. Gibt es irgendwie gute Arten, dass performanter zu machen?


----------



## tfa (27. Apr 2009)

Such mal nach "Batch insert", und verwende auf jeden Fall Prepared Statements.


----------



## Lennart (27. Apr 2009)

Autocommit abschalten.

Beste Grüße
Lennart


----------



## sparrow (27. Apr 2009)

Wie bereits geschrieben unbedingt autocommit abschalten und alles in einer Transaktion abhhandeln.

Falls du Postgresql verwendest solltest du die Datenbank direkt per COPY füttern. Andere Datenbanken bieten sicher etwas vergleichbares an.

Gruß
Sparrow


----------



## maki (28. Apr 2009)

Durch das abschalten vom autocommit wird die Sache doch nicht schneller, im Gegenteil, es wird langsamer, denn Transaktionen haben nunmal ihren Preis.

Oder stehe ich gerade auf dem Schlauch??


----------



## tfa (28. Apr 2009)

Man muss die richtige Transaktionsgröße finden. Jede Query einzeln zu committen wird sicher langsam sein. Riesige Transaktionen sind auch schlecht. Probiert es halt mit dem Batch Inserts.


----------

