2009-01-02 10 views
17

Wie lege ich meine gesamte PostgreSql-Datenbank in den RAM für einen schnelleren Zugriff? Ich habe 8GB Speicher und ich möchte 2 GB für die DB widmen. Ich habe über die freigegebenen Puffereinstellungen gelesen, aber es speichert nur das am meisten zugegriffene Fragment der Datenbank. Ich brauchte eine Lösung, bei der die gesamte DB in den RAM geschrieben wurde und jeder Lesevorgang von der RAM-DB ausging und jede Schreiboperation zuerst in die RAM-DB und dann in die DB auf der Festplatte schreiben würde (etwas wie die Standard-fsync = mit freigegebenen Puffern in postgresql Konfigurationseinstellungen).Müssen Sie die gesamte PostgreSQL-Datenbank in den RAM laden

+0

Btw, es ist für eine Website, für die ich Python und Django-Framework verwende. – Bharath

Antwort

4

Ich habe mir die gleiche Frage für eine Weile gestellt. Einer der Nachteile von PostgreSQL ist, dass es anscheinend keine IN MEMORY Speicher-Engines unterstützt wie MySQL ...

Wie auch immer, ich lief vor einigen Wochen in eine article Beschreibung, wie das gemacht werden könnte; obwohl es nur unter Linux zu funktionieren scheint. Ich kann es wirklich nicht garantieren, da ich es selbst nicht ausprobiert habe, aber es scheint sinnvoll zu sein, da ein PostgreSQL Tablespace tatsächlich einem gemounteten Repository zugewiesen ist.

Aber selbst mit dieser Methode bin ich mir nicht sicher, ob Sie Ihre Indizes auch in den RAM schreiben könnten; Ich glaube nicht, dass MySQL HASH-Index mit seiner IN MEMORY-Tabelle für nichts verwendet ...

Ich wollte auch eine ähnliche Sache machen, um die Leistung zu verbessern, denn ich arbeite auch mit riesigen Datenmengen. Ich benutze Python; Sie haben Dictionary-Datentypen, bei denen es sich im Grunde um Hash-Tabellen in Form von {key: value} -Paaren handelt. Diese zu verwenden ist sehr effizient und effektiv. Um meine PostgreSQL-Tabelle in den Arbeitsspeicher zu bekommen, lade ich sie in ein solches Python-Wörterbuch, arbeite mit ihr und behalte sie in db hin und wieder; es lohnt sich, wenn es gut verwendet wird.

Wenn Sie nicht Python verwenden, bin ich mir ziemlich sicher, dass sie eine ähnliche Dictionary-Mapping-Datenstruktur in Ihrer Sprache ist.

Hoffe, das hilft!

+0

Der Artikel ist bei diesem Link nicht mehr verfügbar. Archive.org hat es: https://web.archive.org/web/20080517112936/http://www.redhatmagazine.com/2007/12/12/tip-from-an-rhce-memory-storage-on- postgresql/ – Otheus

0

Mit nur einer Datenbank mit 8 GB, wenn Sie bereits alle SQL-Aktivitäten optimiert haben und Abfrageprobleme mit der Hardware lösen können, schlage ich vor, dass Sie Probleme haben. Dies ist auf lange Sicht keine skalierbare Lösung. Sind Sie sicher, dass Sie nichts tun können, um wesentliche Unterschiede auf der Software- und Datenbank-Design-Seite zu machen?

0

Richten Sie eine altmodische RAM-Disk ein und teilen Sie pg mit, um dort seine Daten zu speichern.

Sicher sein, dass Sie es aber gut unterstützen.

+5

würde er seine Daten bei einem Serverneustart nicht verlieren? – SDReyes