Bellek parametrelerini değerlendir (shared_buffers, work_mem, maintenance_work_mem)
PostgreSQLParametreKomut
SELECT name,
current_setting(name) AS value,
source,
context
FROM pg_settings
WHERE name IN ('shared_buffers', 'effective_cache_size', 'work_mem', 'hash_mem_multiplier',
'maintenance_work_mem', 'autovacuum_work_mem', 'max_connections',
'max_parallel_workers_per_gather', 'huge_pages', 'temp_buffers', 'wal_buffers')
ORDER BY name;
-- Kaba tavanlar: work_mem x max_connections ve autovacuum bellek tavanı
SELECT pg_size_pretty(pg_size_bytes(current_setting('work_mem'))
* current_setting('max_connections')::int) AS work_mem_x_max_connections,
pg_size_pretty(pg_size_bytes(current_setting('maintenance_work_mem'))
* current_setting('autovacuum_max_workers')::int) AS autovacuum_mem_ceiling;
-- work_mem'e sığmayan işlemlerin izi: veritabanı bazında temp dosyalar
SELECT datname, temp_files, pg_size_pretty(temp_bytes) AS temp_size, stats_reset
FROM pg_stat_database
WHERE datname IS NOT NULL
ORDER BY temp_bytes DESC;Ne yapar?
Bellekle ilgili parametrelerin değerini, kaynağını (default/configuration file) ve değişiklik bağlamını (postmaster = restart); work_mem ve autovacuum için kaba bellek tavanlarını ve veritabanı bazında temp dosya hacmini gösterir.
Ne zaman kullanılır?
Yeni sunucu kurulumunda, RAM artırımı sonrası, OOM killer olayında veya yoğun temp dosya kullanımı görüldüğünde.
Dikkat
work_mem bağlantı başına değil, her sort/hash DÜĞÜMÜ başına (hash için ayrıca × hash_mem_multiplier) ve her paralel worker için ayrı ayrılır; karmaşık bir sorgu work_mem'in birkaç katını kullanabilir, bu yüzden hesaplanan çarpım bir üst sınır değil kaba bir uyarıdır. Tipik başlangıç: shared_buffers RAM'in ~%25'i (restart ister), effective_cache_size ~%50-75 (yalnızca planner ipucudur, bellek ayırmaz), maintenance_work_mem 512MB-2GB. autovacuum_work_mem = -1 ise her autovacuum worker maintenance_work_mem kadar kullanabilir. temp_bytes yüksekse work_mem'i global değil rol veya sorgu bazında artır. Büyük shared_buffers ile Linux'ta huge_pages kullanmayı değerlendir.