PostgreSQL work_mem Spill and Temp Files
Locates sort/hash spills at metric and query level and reduces latency through plans, indexes and session-scoped memory tuning.
Operational Safety & Risk Notice
This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.
1. Symptom & Signals
- 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. Business & Technical Impact
Disk I/O ve sorgu gecikmesi artar; temp alanı dolarsa sorgular hata verir ve diğer iş yükleri etkilenir.
3. Diagnosis & Root-Cause Analysis
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. Remediation & Action Plan
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. Verification & Health Checks
- 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. Rollback & Contingency Plan
- `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.