Konfiguration RAM Usage

Konfiguration des PostgreSQL Datenbankservers.
Antworten
loonis

Konfiguration RAM Usage

Beitrag von loonis »

Hallo zusammen!

Für unsere „volatilen“ Daten (d.h. Redundanz und Backup ist nicht erforderlich) wollen wir von Microsoft SQL Server auf Postgres umstellen. Zur Evaluierung von Postgres habe ich einen dedizierten Webserver aufgesetzt und zwar einen i7-multi-core mit 16GB RAM und Windows 2008 R2 Standard Edition (64 Bit). Auf diesem Server habe ich Postgres 9.2 (64 Bit) installiert und 5 Datenbanken angelegt.

Nun lasse ich zwecks Performance Test random batch queries laufen (50% select, 50 % update, insert, delete) und beobachte die Ressourcenverwendung im Windows Ressourcenmonitor. Was sofort auffällt: die Verwendung des physikalischen Speichers ist sehr gering (<10% insgesamt, keine postgres Instanz > 800MB) während die Festplatte sich zu Tode rödelt. Entsprechend langsam sind auch die Antwortzeiten der select-Abfragen, insbesondere auf die großen Datenbanken/Tabellen. Wenn ich mir den Speicherverwendung auf einem MSSQL-Server-System anschaue, so wird der physikalische Speicher hingegen voll ausgenutzt (sqlserver.exe nimmt sich 27 von 32 GB)

Meine Frage ist nun: warum nimmt sich Postgres nicht den verfügbaren physikalischen Speicher um die Abfragen direkt aus dem RAM zu beantworten? Gibt es noch andere Einstellungen als shared_buffer die hierauf einen Effekt haben (shared_buffer = 4GB) ?

Dankbar für jeden Tipp!

akretschmer
Erfahrener Benutzer
Beiträge: 7733
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Konfiguration RAM Usage

Beitrag von akretschmer »

loonis hat geschrieben:Hallo zusammen!

Für unsere „volatilen“ Daten (d.h. Redundanz und Backup ist nicht erforderlich) wollen wir von Microsoft SQL Server auf Postgres umstellen. Zur Evaluierung von Postgres habe ich einen dedizierten Webserver aufgesetzt und zwar einen i7-multi-core mit 16GB RAM und Windows 2008 R2 Standard Edition (64 Bit). Auf diesem Server habe ich Postgres 9.2 (64 Bit) installiert und 5 Datenbanken angelegt.

Nun lasse ich zwecks Performance Test random batch queries laufen (50% select, 50 % update, insert, delete) und beobachte die Ressourcenverwendung im Windows Ressourcenmonitor. Was sofort auffällt: die Verwendung des physikalischen Speichers ist sehr gering (<10% insgesamt, keine postgres Instanz > 800MB) während die Festplatte sich zu Tode rödelt. Entsprechend langsam sind auch die Antwortzeiten der select-Abfragen, insbesondere auf die großen Datenbanken/Tabellen. Wenn ich mir den Speicherverwendung auf einem MSSQL-Server-System anschaue, so wird der physikalische Speicher hingegen voll ausgenutzt (sqlserver.exe nimmt sich 27 von 32 GB)

Meine Frage ist nun: warum nimmt sich Postgres nicht den verfügbaren physikalischen Speicher um die Abfragen direkt aus dem RAM zu beantworten? Gibt es noch andere Einstellungen als shared_buffer die hierauf einen Effekt haben (shared_buffer = 4GB) ?

Dankbar für jeden Tipp!


Zu wenig Info. Du bist sicher, a) die richtige Config gesetzt zu haben (shared_buffer) und b) einen Restart gemacht zu haben? Hast Du work_mem verändert, hast Du effective_cache_size gesetzt?

Antworten