PostgreSQL: Empfehlungsgröße für shared_buffers

9

Ich bin ziemlich neu in PostgreSQL. Ich habe vor einem Monat begonnen, einige MySQL-Datenbanken auf PostgreSQL zu migrieren.

Ich suche Hilfe zu den richtigen Speicherwerten für die Konfigurationsdatei.

Derzeit habe ich einen bescheidenen dedizierten Server (2 GB RAM), auf dem Apache, MySQL und PostgreSQL unter Linux ausgeführt werden. Die Hauptdatenbank von MySQL ist ungefähr dreimal so groß wie die Hauptdatenbank in PostgreSQL, und das Gleiche gilt für den Datenverkehr.

Ich habe immer noch die Standardkonfigurationsdatei für PostgreSQL mit dem Parameter shared_buffers = 32MB. Ich gehe davon aus, dass ich diesen Wert erhöhen sollte, aber ich möchte die anderen Datenbanken nicht bestrafen. Ich habe etwas darüber gelesen, wie 25% des physisch verfügbaren Speichers für PostgreSQL reserviert werden, bin mir aber nicht sicher.

Die neue Datenbank enthält sieben Tabellen, von denen die größte etwa 3 MM-Zeilen enthält. Die Maschine hat derzeit wenig Verkehr (etwa 10000 bis 20000 Auswahlen pro Tag), aber diese Werte werden voraussichtlich steigen.

Ich habe darüber nachgedacht, shared_buffers auf 256 MB zu erhöhen, aber ich würde gerne einige Meinungen von Benutzern hören, die mehr Erfahrung mit diesem RDBMS haben.

jap1968
quelle

Antworten:

4

I would avoid placing MySQL and PostgreSQL on the same server. They compete for the same resources. If you can, port everything to one RDBMS. My obvious choice would be PostgreSQL.

Then you can set shared_buffers to something like 500 MB and effective_cache_size to something like 1.5 GB. Be sure to read hints in the manual.

But I would also recommend to add more physical RAM. 2 GB is not much. Hardly enough for good performance with millions of rows. A few more GB of RAM shouldn't cost much.

If you have to stick with your setup 250 MB for Postgres seems reasonable. If MySQL has three times as much traffic, less might be better overall. Like 128 MB.

Basics for performance optimization in the Postgres Wiki.

Erwin Brandstetter
quelle
The idea is to have finally everything migrated to PostgreSQL, so MySQL won't be running on this server in the future. On the other side, this is a project to be done at cost = zero, so it is difficult (impossible) to have a second server or to obtain additional RAM. I have increased shared_buffers to 128 MB and everything seems to work properly.
jap1968