<

PostgreSQL 19 Yaklaşıyor: REPACK, Autovacuum ve Bakım Penceresi Olmadan Yaşamak

PostgreSQL 19 bu ayın içinde genel kullanıma açılması beklenen bir sürüm; 24 Eylül 2026'da dördüncü beta yayınlandı, ardından ekim başında sürüm adayı planlanıyor. Bizim ilgimizi çeken taraf parlak yeni özellikler değil, yıllardır bakım penceresi ayarlamaya harcadığımız saatleri azaltacak olan kısım.

REPACK: tablo şişmesine yerleşik cevap

Yoğun güncelleme alan tablolarda ölü satırların şişme (bloat) yaratması klasik bir sorun. Çözüm uzun süredir ya VACUUM FULL ile tabloyu kilitlemek ya da harici pg_repack aracını kurmaktı. PostgreSQL 19 ile REPACK çekirdeğe giriyor; beta 4'te çökme ve izin düzeltmeleri de aldı.

Sahada bunun anlamı şu: araç takip veya sipariş durumu gibi sürekli güncellenen tablolar için artık ek bir uzantı kurmadan, üretimi durdurmadan yeniden paketleme yapabileceksiniz. Ama yanlış anlaşılmasın — bu, indeks tasarımının ve makul bir veri saklama politikasının yerine geçmiyor.

Tablo şişmesinde VACUUM FULL ve pg_repack ile PostgreSQL 19'daki yerleşik REPACK'in karşılaştırması.
REPACK, indeks tasarımının yerine geçmez.

Yeni autovacuum puanlama sistemi

Sürümde daha az konuşulan ama günlük hayatı daha çok etkileyen değişiklik autovacuum'un yeni puanlama sistemi. Eski eşik tabanlı mantık, büyük ve küçük tablolara aynı gözle bakıyordu; sonuç olarak ya çok sık ya da çok geç tetikleniyordu. Yeni yaklaşım tabloları önceliklendirdiği için, "büyük tablo aylarca vakumlanmadı" tipi sürprizlerin azalmasını bekliyoruz.

Yine de bizim tavsiyemiz değişmiyor: autovacuum ayarlarını tablo bazında değerlendirin. En çok yazılan üç tabloya özel autovacuum_vacuum_scale_factor vermek, sunucu geneli ayarları kurcalamaktan daha güvenli.

Diğer somut kazanımlar

  • WAIT FOR komutunda kilitlenme ve izolasyon seviyesi hata raporlaması iyileştirildi.
  • CREATE PUBLICATION ... EXCEPT ile mantıksal replikasyonda tablo hariç tutmak kolaylaştı; büyük şemalarda yazması çok daha kısa.
  • COPY FROM için SIMD optimizasyonu; toplu veri yükleme işlerinde ölçülebilir hızlanma.
  • Yabancı anahtar kontrollerinde performans iyileştirmeleri.

Beklenirken: geri çekilen özellikler

Dürüst bir not: beta sürecinde bazı özellikler istikrar adına geri çekildi. SQL/PGQ (graf sorguları), veri sağlama toplamlarının çevrimiçi açılıp kapatılması, FOR PORTION OF ile zamansal güncelleme/silme ve ALTER TABLE ... MERGE/SPLIT PARTITIONS bu sürümde yok. Eğer yol haritanızı bunlardan birine bağladıysanız, planı gözden geçirme zamanı.

Bu geri çekmeleri bir kusur olarak değil, topluluğun öngörülebilirlik disiplini olarak okuyoruz. Kurumsal bir veritabanında "belki çalışır" bir özellik, hiç olmamasından daha kötüdür.

Yükseltme yaklaşımımız

Ana sürüm yükseltmelerinde acele etmiyoruz. Tipik planımız: GA'dan sonra en az bir yama sürümü beklemek, kopya veri üzerinde pg_upgrade provası yapmak, uzantı uyumluluğunu (özellikle PostGIS ve pgvector) önceden doğrulamak ve yükseltme sonrası ilk iş olarak ANALYZE çalıştırmak. Son madde ihmal edildiğinde, yükseltme sonrası "her şey yavaşladı" şikâyeti neredeyse garanti.

PostgreSQL ana sürüm yükseltme planı: yama beklemek, pg_upgrade provası, uzantı doğrulaması ve ANALYZE.
ANALYZE ihmal edilirse yükseltme sonrası yavaşlama şikâyeti garanti.

Şişme sorununu ölçmeden çözmeye çalışmayın

REPACK'in çekirdeğe girmesi güzel, ama bir tabloyu yeniden paketlemeye karar vermeden önce şişmenin gerçekten var olduğunu ölçmek gerekiyor. Sık gördüğümüz durum, ekibin "tablo büyük" gözlemini "tablo şişmiş" sonucuna atlaması. İkisi farklı: büyük tablo normal olabilir, şişmiş tablo ise ölü satırların disk ve önbellek harcaması demek.

Pratik yaklaşımımız, ölü satır oranını ve son otomatik vakum zamanını izleyen basit bir sorguyu izleme panosuna koymak. Bu iki sayı, bakım kararını tahmine değil veriye bağlıyor. Bir de şu: şişmenin kaynağı çoğu zaman yazma deseni. Her istekte bir satırı güncelleyen sayaç mantığı (örneğin "son görülme zamanı"), tek başına devasa şişme üretebiliyor. Böyle alanları ayrı bir tabloya çıkarmak veya güncelleme sıklığını azaltmak, herhangi bir bakım komutundan daha kalıcı bir çözüm.

Mantıksal replikasyon artık daha kullanışlı

Rapor yükünü ana veritabanından ayırmak isteyen ekipler için CREATE PUBLICATION ... EXCEPT gerçek bir kolaylık. Önceden yüz tablolu bir şemadan üç tanesini hariç tutmak, doksan yedi tabloyu elle yazmak anlamına geliyordu — ve şemaya yeni tablo eklendiğinde yayını güncellemeyi unutmak klasik bir hataydı. Artık kural tersine kurulabiliyor, bu da yeni tabloların otomatik dahil olması demek.

Veritabanınız büyüdükçe bakım işleri elle taşınamaz hale geliyorsa veya yükseltme planı çıkarmak istiyorsanız, iletişim sayfamızdan bize yazın. 500'ün üzerinde projede öğrendiğimiz şey şu: veritabanı bakımı, ertelendiği sürece faiz işleyen tek teknik borç türü.

📅 Yayınlanma:  ·  Yakup Zengin