Ich habe 16G RAM in meinem Server. Ich habe die nächsten Speicherparameter zugewiesen:postgresql 9.6 mit allen meinen RAM
effective_cache_size = 10GB
work_mem = 128MB
maintenance_work_mem = 4GB
shared_buffers = 4000MB
Mein Server ist nur für postgresql gewidmet. Wenn ich eine Prozedur ausführen, die eine große Auswahl Preforms sehe ich die postgresql die Speicher alle auf dem Server verwendet, und das ist mein Status:
[/PostgreSQL/] : free -m
total used free shared buff/cache available
Mem: 15883 291 158 4109 15433 11112
Swap: 3815 106 3709
Ist es normal? Dies kann sich auf komplizierte Selects auswirken, die ich mit Joins ausführe?
Ich denke, es ist so viele Daten wie möglich im RAM für das Caching zu halten. –
Wo wird "all" Speicher verwendet? 'available = 11112' bedeutet, dass noch 11GB von 16GB verfügbar sind. –
Sie verwechseln Kernel fs Cache-Nutzung mit "Verwendung". Der Kernel schnappt sich den gesamten freien Speicher und speichert alles, was er kann, aus dem Dateisystem, aber in der Sekunde, wo etwas mehr Speicher benötigt, wirft der Kernel einen Teil des Cache ab und übergibt diesen Speicher dem anfordernden Prozess. Das ist völlig normal. –