Postgresql
在 postgresql.conf 中設置 shared_buffers 好像沒有生效
我們使用的是 CentOS 6.6 版,PostgreSQL 8.4.20 版。(是的,這不是最前沿的。)
在
postgresql.conf
中,我們有:shared_buffers = 4096MB
核心 shm 值設置得很好而且很高:
[root@green data]# sysctl -a | grep shm kernel.shmmax = 15922077696 kernel.shmall = 3887226 kernel.shmmni = 4096 kernel.shm_rmid_forced = 0
我們有足夠的記憶體:
[root@green data]# free total used free shared buffers cached Mem: 31097812 30474972 622840 2873672 1961088 20565360 -/+ buffers/cache: 7948524 23149288 Swap: 1959920 93852 1866068
然而,
shared_buffers
報告的值pg_settings
只有 512MB,而不是 4GB 中設置的postgresql.conf
:postgres=# select name, setting, min_val, max_val, context from pg_settings where name='shared_buffers'; name | setting | min_val | max_val | context ----------------+---------+---------+------------+------------ shared_buffers | 524288 | 16 | 1073741823 | postmaster
是的,我們已經完全重新啟動,並
SHOW config_file
確認我已經編輯了正確的postgresql.conf
.我非常感謝任何能夠深入了解這個謎團的人。
的規範單位
shared_buffers
是 的頁面8kB
,因此以字節為單位分配的實際記憶體是:
524288
*8192
=4294967296
或4096*1024*1024
按要求。您還可以檢查記憶體段的大小
ipcs -m
當您將相應的列添加到查詢中時,@Daniel 如此準確地解釋的內容變得相當明顯:
SELECT name, setting, **unit**, min_val, max_val, context FROM pg_settings WHERE name = 'shared_buffers';
要不就:
SELECT * FROM pg_settings WHERE name = 'shared_buffers';
考慮您的“非前沿”(又名過時且不受支持的)Postgres 版本的項目指南。