Ich habe ein Skript, das Zehntausende von Einfügungen in eine Postgres db durch eine benutzerdefinierte ORM generiert. Wie du dir vorstellen kannst, ist es ziemlich langsam. Dies wird für Entwicklungszwecke verwendet, um Dummydaten zu erstellen. Gibt es eine einfache Optimierung, die ich auf der Postgres-Ebene machen kann, um das schneller zu machen? Es ist das einzige Skript, das sequenziell ausgeführt wird und keine Thread-Sicherheit erfordert.Postgres einfügen Optimierung
Vielleicht kann ich alle Sperren, Sicherheitsüberprüfungen, Trigger usw. ausschalten? Suchen Sie einfach nach einer schnellen und schmutzigen Lösung, die diesen Prozess erheblich beschleunigt.
Danke.
übernimmt. Ich stimme zu: fsync sollte in der Produktion niemals abgeschaltet werden (es sei denn ein sehr zuverlässiger batteriegestützter Controller). Aber synchronous_commit = false könnte tatsächlich Dinge verbessern und stellt kein großes Risiko dar. –
In meiner Testumgebung 'synchrone_commit' hat Geschwindigkeit nicht genug verbessert, um von Unterschied zu sein. IIRC Dies schnitt einen 2-minütigen DB-Erstellungs- und Auffüllungsprozess auf die Hälfte, aber das Ausschalten von fsync ließ es in 10 Sekunden laufen. Ich habe keine Zehntausende von Datensätzen, so dass meine Testdatenbank niemals mit 'fsync = off' auf die Disc trifft. – jmz
Ein batteriegestützter Cache kann Sie nicht davon abhalten, fsync ausgeschaltet zu haben! Wenn Ihr Betriebssystem abstürzt ODER nach einem gefälschten fsync Strom verliert, bevor Daten auf eine Festplatte geschrieben werden, verlieren Sie Daten. Es gibt auch Fragen zu vollständigen Seitenschreibvorgängen, die jetzt selbst bei BBU-Caching-RAID-Controllern zu 100% sicher sind. –