PostgreSQL 19 Yenilikleri: REPACK, WAIT, Paralel Autovacuum ve Geçişte Dikkat Edilecekler (2026)

Alesta WEB

PostgreSQL 19 Yenilikleri: REPACK, WAIT, Paralel Autovacuum ve Geçişte Dikkat Edilecekler (2026)

Kısa cevap: PostgreSQL 19 Ekim 2026'da çıkmaya hazırlanıyor; son test sürümü Beta 4, 24 Eylül'de yayımlandı ve sürüm adayı Ekim başında bekleniyor. Öne çıkanlar: VACUUM FULL ve CLUSTER'ın yerini alan, tabloyu kilitlemeden de çalışabilen REPACK komutu, yedek sunucuda "kendi yazdığını oku" için WAIT komutu, sequence değerlerinin mantıksal replikasyonu, paralel autovacuum ve varsayılan TOAST sıkıştırmasının lz4 olması. Geçişte dikkat: JIT artık varsayılan kapalı, max_locks_per_transaction varsayılanı 128 oldu, RADIUS desteği kaldırıldı. Graf sorgusu (SQL/PGQ) dahil altı özellik son anda geri çekildi (PostgreSQL 19 new features, release date).

Ne zaman çıkıyor? (PostgreSQL 19 release date)

PostgreSQL her yıl sonbaharda bir ana sürüm yayımlıyor. 19 için son beta, yani Beta 4, 24 Eylül 2026'da çıktı. Proje yol haritasına göre sürüm adayı (RC) Ekim başında, kararlı sürüm testler sorunsuz giderse Ekim içinde bekleniyor. Kesin tarih henüz açıklanmadı. Üretim ortamını kararlı sürümden önce yükseltmek önerilmez, ama test ortamında Beta 4 ile uygulamanızı denemenin tam zamanı.

REPACK: kilitlemeden tablo toplama

PostgreSQL'de güncellenen ya da silinen satırlar diskten hemen kalkmaz; tablo zamanla "şişer". Normal VACUUM bu alanı yeniden kullanılabilir yapar ama dosyayı küçültmez. Dosyayı gerçekten küçültmek için VACUUM FULL ya da CLUSTER gerekir ve ikisi de tabloyu işlem boyunca tamamen kilitler. Büyük bir tabloda bu, dakikalarca hatta saatlerce kesinti demek. Bu yüzden çoğu ekip harici eklentilere başvuruyordu.

PostgreSQL 19, ikisinin işini tek komutta birleştiren REPACK'i getiriyor. Asıl önemli kısım CONCURRENTLY seçeneği: tablo yeniden düzenlenirken okuma ve yazma devam edebiliyor.

Metin
-- Şişmiş tabloyu, okuma/yazmayı durdurmadan yeniden paketle
REPACK (VERBOSE) CONCURRENTLY siparisler;

Eşzamanlı çalışma, işlem sırasında gelen değişiklikleri yakalamak için mantıksal replikasyon altyapısını kullanıyor. Bu yüzden yeni bir sunucu ayarı var: max_repack_replication_slots. Aynı anda birden fazla eşzamanlı REPACK çalıştıracaksanız bu değeri buna göre ayarlayın.

Düzenli bağlanmış ağ kabloları (Network cables in a server rack)
Okuma yükünü yedek sunuculara dağıtan sistemler, yeni WAIT komutuyla kendi yazdığını okuma garantisi kurabiliyor. Fotoğraf: Albert Stoynov / Unsplash

WAIT ve replikasyon yenilikleri

Okuma yükünü yedek (standby) sunuculara dağıtan uygulamaların klasik sorunu: kullanıcı bir kayıt ekliyor, hemen ardından sayfa yedek sunucudan okunuyor ve kayıt henüz oraya ulaşmamış oluyor. Yeni WAIT komutu, yedek sunucunun belirli bir WAL konumuna (LSN) kadar değişiklikleri uygulamasını beklemeyi sağlıyor. Uygulama yazdıktan sonra birincil sunucudaki LSN'i alıp yedekte o noktayı bekleyerek "kendi yazdığını oku" (read-your-writes) garantisi kurabiliyor.

Mantıksal replikasyonda da önemli eksikler kapanıyor:

  • Sequence değerleri artık yayıncıdan aboneye aktarılıyor. Mantıksal replikasyonla sürüm yükseltmesi yapanların geçiş anında elle sequence eşitleme derdi bitiyor. Yayında ALL SEQUENCES, abonelikte REFRESH SEQUENCES kullanılabiliyor.
  • wal_level = replica iken mantıksal replikasyon sunucuyu yeniden başlatmadan etkinleştirilebiliyor.
  • Yayınlarda EXCEPT ile belirli tabloları dışarıda bırakmak mümkün.
  • Çakışma tespiti için abonelik ayarları geldi: retain_dead_tuples ve max_retention_duration.

Paralel autovacuum ve yeni puanlama

Autovacuum artık bir tablonun indekslerini paralel işçilerle temizleyebiliyor. Çok indeksli büyük tablolarda vacuum süresi belirgin şekilde kısalabilir. Sunucu genelinde autovacuum_max_parallel_workers, tablo bazında autovacuum_parallel_workers ile ayarlanıyor.

Ayrıca autovacuum'un hangi tabloya önce gideceği yeni bir puanlama sistemiyle belirleniyor. Donma (freeze) riski, ölü satır oranı, ekleme yoğunluğu ve analiz ihtiyacı ağırlıklandırılarak en çok ihtiyaç duyan tablo öne alınıyor. Ağırlıklar autovacuum_vacuum_score_weight, autovacuum_freeze_score_weight gibi parametrelerle değiştirilebiliyor; çoğu kurulumda varsayılanlar yeterli olacaktır.

Performans ve yeni fonksiyonlar

  • Varsayılan TOAST sıkıştırması pglz yerine lz4. Büyük metin ve JSON alanları daha hızlı sıkıştırılıp açılıyor. Mevcut veri yeniden yazılana kadar eski biçimde kalır.
  • Asenkron I/O PostgreSQL 18'de gelmişti; 19'da ileri okuma zamanlaması ve kendini ölçekleyen I/O işçileri eklendi (io_min_workers, io_max_workers).
  • SIMD hızlandırma: metin/CSV COPY FROM, sağlama toplamı hesabı ve hex dönüşümleri.
  • Plan kararlılığı: pg_plan_advice ve pg_stash_advice eklentileriyle planlayıcı kararları sabitlenebiliyor, sorgu kimliğine göre otomatik uygulanabiliyor.
  • Yeni fonksiyonlar: jsonpath'te lower(), upper(), replace(), split_part() gibi metin metotları; tarih/zaman için random(min, max); encode()/decode() için base64url ve base32hex.

Geri çekilen altı özellik

Beta 4'te proje, olgunlaşmadığına karar verdiği altı özelliği sürümden çıkardı: SQL/PGQ graf sorguları, veri sağlama toplamlarını çevrimiçi açıp kapatma, FOR PORTION OF ile zamansal güncellemeler, bölüm (partition) birleştirme ve bölme, roller için DDL alma fonksiyonu ve tablespace/veritabanları için DDL alma fonksiyonları. Topluluğun gerekçesi açık: PostgreSQL önce güvenilir olmalı. Bu özellikleri bekleyenler büyük olasılıkla 20 sürümünde görecek.

Geçişte sizi etkileyebilecek değişiklikler

DeğişiklikNe yapmalı?
JIT varsayılan olarak kapalıBüyük analitik sorgularda JIT'ten fayda görüyorsanız jit = on ile açın.
max_locks_per_transaction varsayılanı 64 → 128Kilit boyutu hesabı değişti; eski kapasiteyi korumak için özel değerinizi iki katına çıkarın.
standard_conforming_strings zorunlu açıkBu ayar kapalıyken eski pg_dump ile alınmış yedekler yüklenmez; yedeği 19'un pg_dump'ıyla alın.
RADIUS kimlik doğrulaması kaldırıldıBaşka bir yönteme (SCRAM, LDAP, sertifika) geçin.
MD5 parolayla girişte uyarıRolleri SCRAM-SHA-256'ya taşıyın.
json_array() boş sonuçta [] döndürüyorEskiden NULL dönüyordu; IS NULL kontrolü yapan kodu gözden geçirin.
inet/cidr için btree_gist indeksleripg_upgrade bunları kabul etmiyor; önce GiST indeksine geçin.
Veritabanı/rol adlarında satır sonu karakteri yasakBöyle bir ad varsa yükseltmeden önce değiştirin.

18'den gelenler için önerimiz: önce test ortamında pg_upgrade --check çalıştırın, uygulamanın en ağır sorgularının planlarını karşılaştırın, JIT'e dayanan raporlar varsa ölçün. PostgreSQL 18'in yeniliklerini PostgreSQL 18 rehberimizde anlatmıştık. Alesta WEB'in sunucu ve barındırma yazılarında veritabanı bakımına dair diğer notlarımızı bulabilirsiniz.

Sık sorulan sorular

PostgreSQL 19 ne zaman çıkacak?

Beta 4 24 Eylül 2026'da çıktı. Sürüm adayı Ekim başında, kararlı sürüm Ekim 2026 içinde bekleniyor; kesin tarih açıklanmadı.

REPACK, VACUUM FULL'dan farkı ne?

İkisi de tabloyu yeniden yazarak diski küçültür. REPACK'in CONCURRENTLY seçeneği bunu tabloyu kilitlemeden yapar.

SQL/PGQ graf sorguları 19'da var mı?

Hayır. Beta 4'te geri çekildi, sonraki sürümlere kaldı.

Yükseltmeden sonra analitik sorgularım yavaşladı, neden olabilir?

En olası sebep JIT'in artık varsayılan kapalı olması. Gerekli sorgular için yeniden açabilirsiniz.

18'den 19'a nasıl geçerim?

pg_upgrade ya da mantıksal replikasyonla. 19'da sequence'ler de replike edildiği için mantıksal yöntemle geçiş daha kolay.

Kapak fotoğrafı: Taylor Vick / Unsplash

Hazır mısınız?

Projenizi birlikte planlayalım

Haber sitesi, adisyon, QR menü ya da kurumsal web sitesi — ihtiyacınızı dinleyelim, demo hesabı açalım ve yazılı teklifimizi iletelim. Görüşme ücretsizdir.

WhatsApp