PostgreSQL work_mem Taşması ve Geçici Dosyalar
Sort/hash işlemlerinin diske taşmasını metrik ve sorgu düzeyinde bulur; plan, indeks ve oturum bazlı bellek ayarıyla gecikmeyi azaltır.
Operasyonel Güvenlik ve Risk Uyarısı
Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.
1. Belirti / Symptom
- M11 geçici dosya yazma hızı artar; sorgu süreleri ve temp disk kullanımında sıçrama görülür.
- `pg_stat_database.temp_bytes` artar, loglarda `temporary file: path ... size ...` bulunabilir.
2. Etki / Impact
Disk I/O ve sorgu gecikmesi artar; temp alanı dolarsa sorgular hata verir ve diğer iş yükleri etkilenir.
3. Teşhis / Diagnosis
SELECT calls, temp_blks_read, temp_blks_written,
pg_size_pretty(temp_blks_written * current_setting('block_size')::int::bigint) AS temp_written,
round(mean_exec_time::numeric, 2) AS mean_ms, left(query, 160) AS query
FROM pg_stat_statements
WHERE temp_blks_written > 0
ORDER BY temp_blks_written DESC LIMIT 20;4. Müdahale / Response
BEGIN;
SET LOCAL work_mem = '128MB';
-- Burada test edilip onaylanmış, ilgili SELECT çalıştırılır.
COMMIT;`SET LOCAL` transaction sonunda kalkar; uygulama havuzları için oturum ayarını kalıcı bırakmaz.
5. Doğrulama / Verification
- M11 hızı ve temp disk latency baz seviyeye dönüyor; sorgu p95 iyileşiyor.
- Kullandığınız bellek/swap ve eşzamanlı oturumlar güvenli sınırlarda kalıyor.
6. Geri Alma / Rollback
- `SET LOCAL` transaction bittiğinde otomatik geri alınır. Rol bazlı ayarı `ALTER ROLE rapor_rolu RESET work_mem;` ile kaldırın (önceki özel değeri not edin).
- Yeni indeks veya sorgu dağıtımı regresyon yaratıyorsa uygulama/DDL geri alma planına göre dönün.