Ich habe eine Postgres Installation auf Linux OpenSuse.
Mit PHP via PDO schreibe ich 100 Datensätze mit zwei Feldern mit INSERT in eine Tabelle.
Benutze ich mysql als PDO Treiber, wird dieses in ca. 0.02 sek abgearbeitet.
Benutze ich nun postgres als PDO Treiber, wird dieses in ca. 1.00 sek abgearbeitet.
Bei 1000 Datensätze werden die Ausführungszeiten länger, so braucht Postgres nun 10 sek, MySQL nur 0.2 sek
Das gleiche auf einen Windows 7 System zeigt jedoch keinen nennenswerten Performanceunterschied zwischen Postgres und MySQL.
Frage: Hat jemand eine Idee warum Linux-Postgres System mit ‘angezogener Handbremse’ läuft?
Es muss was grundsätzliches in der Konfiguration sein.
Ich danke im voraus für eure Mühen und Ideen, woran es liegen könnte.
Vermutlich machst Du immer eine einzelne Transaktion. Masseninserts faßt man in eine TX zusammen, oder noch besser, als COPY.
Auf dem Windows-System vermute ich mal, daß da fsync() Dir ins Gesicht lügt, hatten wir IIRC erst vor wenigen Tagen hier (oder einem anderen Forum?)
In der Tat ich mache eine einzelne Transaktion. Nichtsdestotrotz ist das eben der Testcase. Irgendwas muss das was mit Konfiguration zu tun haben. Ich habe nämlich die Defaulteinstellungen benutzt. Und da hatte ich gehofft, dass ich einen Hinweis bekomme, wo ich da was optimieren kann bzw. einstellen sollte.
Du kannst fsync() ausschalten, dann wird das deutlich schneller gehen - kapott.
Das war die Lösung… Aber was bedeutet das ‘kapott’ ? Wird da das Dateisystem beschädigt? oder welchen Nachteil erkauft man sich bei diesen Geschwindigkeitszuwachs?