top of page

PostgreSQL 19: Yeni Özellikler, İyileştirmeler ve Önemli Değişiklikler

10 Eyl
6 dakikada okunur
PostgresSQL 19 Yeni Özellikler, İyileştirmeler ve Önemli Değişiklikler
PostgresSQL 19 Yeni Özellikler, İyileştirmeler ve Önemli Değişiklikler

Veritabanı dünyasının vazgeçilmez aktörlerinden PostgreSQL, her yeni sürümüyle gelişimini sürdürüyor ve kullanıcılarına daha güçlü, daha esnek ve daha performanslı bir deneyim sunuyor. Yaklaşan PostgreSQL 19 sürümü de bu geleneği bozmayarak, hem geliştiriciler hem de veritabanı yöneticileri için birçok heyecan verici yenilik, iyileştirme ve önemli değişikliklerle geliyor.


Bu makalede, PostgreSQL 19’un getireceği başlıca özellikleri derinlemesine inceleyecek, performanstan bakıma, sorgu optimizasyonundan veri manipülasyonuna kadar pek çok alandaki yenilikleri mercek altına alacağız.


Giriş ve PostgreSQL 19’a Genel Bakış

PostgreSQL 19, sadece birkaç büyük özellik etrafında dönen bir sürüm olmaktan çok, her alana dokunan geniş bir iyileştirme yelpazesi sunuyor. Beta 1 sürümü 2026’nın ortalarında yayınlanmış olup, final sürümünün 2026’nın sonlarına doğru gelmesi bekleniyor. Bu sürüm, uzun süredir talep edilen pek çok sorunu çözen ve kullanıcı deneyimini önemli ölçüde iyileştiren özelliklerle dolu.


Geleneksel olarak performans, bakım, SQL yetenekleri ve replikasyon gibi temel alanlara odaklanılırken, PostgreSQL 19, özellikle büyük ölçekli üretim veritabanı operatörlerinin hayatını kolaylaştıracak çözümlerle dikkat çekiyor.


REPACK Komutu ve Çevrimiçi Bakım İşlemleri

PostgreSQL kullanıcıları, VACUUM FULL ve CLUSTER gibi bakım komutlarının tabloyu kilitlediği durumlarda pg_repack gibi eklentilere yönelmek zorunda kalıyordu. PostgreSQL 19 ile bu durum değişiyor. Yeni REPACK komutu, hem VACUUM FULL hem de CLUSTER işlevselliğini çekirdeğe taşıyor ve en önemlisi, REPACK CONCURRENTLY modu ile birlikte geliyor.


Bu sayede, büyük tablolar üzerinde dahi erişim kilidi yalnızca son dosya değişimi sırasında anlık olarak tutuluyor. İşlemin büyük bir kısmı boyunca tablo hem okunabilir hem de yazılabilir kalıyor. Bu, üretim sistemleri için Çevrimiçi Veri Sağlaması konusunda devrim niteliğinde bir gelişme.


Sorgu Planlama ve Optimizasyon Araçları (pg_plan_advice)

PostgreSQL, tarihsel olarak sorgu planı ipuçlarından kaçınsa da, PostgreSQL 19 bu duruma bir son veriyor. Yeni contrib modülü pg_plan_advice, sorgu planlarını sabitleme ve kontrol etme yeteneği sunuyor. İş akışı basittir: bilinen iyi bir plan yakalanır, bu plan düzenleyiciye geri beslenir ve her bir ipucunun onurlandırılıp onurlandırılmadığına dair geri bildirim alınır. Bu, özellikle karmaşık sorgularda veya performans düşüşlerinde plan stabilitesini sağlamak için güçlü bir araçtır.


Ayrıca, EXPLAIN çıktısında Memoize düğümleri için tahmini önbellek metriklerinin gösterilmesi, düzenleyicinin seçimlerini teşhis etmeyi kolaylaştırarak Performans İyileştirmelerine katkı sağlıyor.


Mantıksal Replikasyon Geliştirmeleri

Mantıksal Replikasyon, son birkaç sürümde PostgreSQL gelişiminin en önemli alanlarından biri oldu. PostgreSQL 19, bu alandaki uzun süredir devam eden sorunları çözerek daha eksiksiz hale getiriyor:

  • Sıra Senkronizasyonu: Abone sunucular artık yayıncıdan sıra değerlerini senkronize edebilir, böylece failover sonrası yinelenen anahtar hataları önlenir.

  • Tablo Hariç Tutma: FOR ALL TABLES kullanan yayınlar, belirli tabloları EXCEPT TABLE yan tümcesi ile dışlayabilir.

  • Dinamik WAL Seviyesi: wal_level parametresi artık mantıksal replikasyon yuvalarının varlığına göre otomatik olarak ayarlanıyor (effective_wal_level). Bu, WAL seviyesi değişiklikleri için sunucuyu manuel olarak yapılandırma ve yeniden başlatma ihtiyacını ortadan kaldırıyor. Bu sayede, daha az yapılandırma hatası ve daha iyi görünürlük sağlanıyor.


Bu gelişmeler, mantıksal replikasyonu, veri geçişleri, yükseltmeler ve yüksek kullanılabilirlik senaryoları için çok daha güvenilir bir araç haline getiriyor.


Autovacuum İyileştirmeleri ve Paralel Çalışma

Özellikle büyük ve yoğun indeksli tablolar için Autovacuum’un etkinliği kritik öneme sahiptir. PostgreSQL 19, bu alanda önemli iyileştirmeler sunuyor:

  • Paralel Autovacuum: Autovacuum artık indeks temizliği ve bakımı için paralel çalışanları kullanabiliyor. Bu özellik, birden fazla büyük indekse sahip tablolarda vacuum süresini önemli ölçüde kısaltır. Varsayılan olarak devre dışı olsa da (autovacuum_max_parallel_workers = 0), açıkça etkinleştirildiğinde büyük fayda sağlar.

  • Yeni Puanlama Sistemi: Autovacuum, tabloların önceliklendirilmesi için yeni bir puanlama sistemi kullanır. Bu, hangi tablonun autovacuum işlemine daha acil ihtiyacı olduğunu daha akıllıca belirleyerek sistemin sağlıklı kalmasına yardımcı olur. pg_stat_autovacuum_scores görünümü bu karar mekanizmasına daha fazla görünürlük sağlar.


Bu iyileştirmeler, veritabanı yöneticilerinin bakım iş yükünü daha verimli yönetmelerini sağlıyor.


SQL ve Veri Manipülasyonu Yenilikleri (ON CONFLICT DO SELECT, Temporal Veri)

Geliştiricilerin uzun süredir beklediği SQL yenilikleri PostgreSQL 19 ile geliyor:

  • ON CONFLICT DO SELECT: INSERT ... ON CONFLICT ifadesine üçüncü bir eylem olarak DO SELECT ekleniyor. Bu, atomic get-or-create semantiği sağlar; bir satır ekler veya zaten varsa mevcut satırı geri döndürür. Önceki DO UPDATE SET col = EXCLUDED.col gibi geçici çözümlere göre yaklaşık 4 kat daha hızlıdır ve dead tuple üretmez.

  • Temporal Veri İşlemleri: PostgreSQL 18’deki WITHOUT OVERLAPS temporal kısıtlamalarına dayanarak, PostgreSQL 19 UPDATE ... FOR PORTION OF ve DELETE ... FOR PORTION OF ifadelerini ekliyor. Bu özellik, SQL:2011 temporal özellik setini tamamlayarak, belirli bir zaman aralığındaki veriyi değiştirirken, dokunulmayan kısımları korumak için satırları otomatik olarak böler. Bu, rezervasyon sistemleri, sigorta poliçeleri gibi geçerlilik süresi olan veriler için idealdir.

  • SQL/PGQ (Mülk Graf Sorguları): Beta sürümünde büyük bir heyecan yaratan SQL/PGQ (ISO SQL:2023 Bölüm 16) desteği, başlangıçta PostgreSQL 19’a dahil edilmesi planlanmıştı. Her ne kadar sonradan yapılan bir değişiklikle PostgreSQL 19’dan geri çekilerek PostgreSQL 20’ye ertelendiği açıklansa da, bu özellik PostgreSQL’in gelecekte ilişkisel tablolar üzerinde doğal grafik sorgu yetenekleri sunma potansiyelini göstermektedir. Mevcut ilişkisel tabloları mülk graf olarak ifşa etme ve desen eşleştirme sözdizimiyle ilişkileri sorgulama, ayrı bir grafik veritabanına olan ihtiyacı ortadan kaldıracaktır.

  • IGNORE NULLS: lead(), lag(), first_value(), last_value() ve nth_value() gibi pencere fonksiyonları için IGNORE NULLS seçeneği eklendi. Bu, özellikle boşluklar içeren zaman serisi verilerinde, önceki boş olmayan değeri bulma gibi senaryolar için çok kullanışlıdır.

  • GROUP BY ALL: Tüm toplama dışı ve pencere dışı hedef listesi ifadelerini otomatik olarak gruplamanızı sağlayan GROUP BY ALL sözdizimi eklenmiştir. Bu, keşifsel SQL ve raporlama sorgularını daha temiz hale getirir.


İzlenebilirlik ve Tanılama Araçları

Operatörler ve yöneticiler için veritabanı izlenebilirliği hayati öneme sahiptir. PostgreSQL 19, bu alanda da önemli geliştirmeler sunuyor:

  • Çevrimiçi Veri Kontrol Toplamları: Veri kontrol toplamları, çalışan bir kümede kesinti olmadan etkinleştirilebilir veya devre dışı bırakılabilir.

  • pg_stat_wal: wal_fpi_bytes gibi yeni sütunlarla WAL kullanımı hakkında daha fazla ayrıntı sunar.

  • pg_stat_progress_vacuum: mode (normal/agresif/güvenli) ve started_by (otomatik/manuel/sarmalayıcı) gibi ek bilgilerle vacuum işlemlerinin durumunu daha net gösterir.

  • İşlem Tipine Göre Günlükleme: log_min_messages, her işlem tipi için ayrı ayrı ayarlanabilir. Bu, autovacuum veya archiver için ayrıntı düzeyini artırırken, diğer günlükleri etkilememenizi sağlar.

  • Yeni psql Kaçışları: %i (birincil/bekleme durumu) ve %S (mevcut search_path) gibi yeni psql istemi kaçışları eklendi.

  • pg_stat_lock ve pg_stat_recovery: Kilit tipi bazında istatistikler ve kurtarma işlemleri hakkında ayrıntılı görünürlük sağlar.

  • Asenkron I/O İstatistikleri: EXPLAIN ANALYZE artık IO seçeneği aracılığıyla asenkron I/O (AIO) istatistiklerini gösterebilir.


Bu araçlar, veritabanının iç işleyişini daha iyi anlamanıza ve sorunları daha hızlı teşhis etmenize yardımcı olur.


Altyapı ve Performans Güncellemeleri (Asenkron I/O, TOAST, MultiXact)

Temel altyapıda yapılan güncellemeler, veritabanının genel Performans İyileştirmelerine doğrudan katkıda bulunur:

  • Asenkron I/O: io_method=worker artık yeni io_min_workers ve io_max_workers ayarları temelinde I/O çalışanlarının sayısını otomatik olarak ölçeklendiriyor.

  • MultiXactOffset: 32-bit’ten 64-bit’e genişletildi. Bu, yaklaşık 4 milyar üyeli sarmalayıcı (wraparound) sınırını ortadan kaldırarak, yoğun satır seviyesi kilitleme kullanan sistemlerdeki yazma hataları riskini ortadan kaldırır.

  • TOAST Sıkıştırma: default_toast_compression ayarı varsayılan olarak lz4 olarak değiştirildi. Bu, daha iyi varsayılan sıkıştırma ve açma performansı sunar.

  • JIT Derlemesi: Just-in-time (JIT) derlemesi artık varsayılan olarak devre dışıdır.

  • Performans İyileştirmeleri: Yabancı anahtar kontrollerinin olduğu INSERT işlemleri 2 kata kadar daha hızlı hale geldi. Sorgu planlayıcı ve yürütücüde anti-join optimizasyonları, artan sıralamaların daha geniş kullanımı, erken toplama (eager aggregation) ve paralel sıralı taramalarda daha hızlı okumalar gibi birçok iyileştirme yapıldı.

  • LISTEN/NOTIFY ölçeklenebilirliği artırıldı.


COPY Komutunda ve Parçalamada Gelişmeler

Veri aktarımı ve yönetimi, her veritabanı sisteminde temel işlemlerdir. PostgreSQL 19, bu alanlarda da önemli yenilikler sunuyor:

  • COPY Komutu Geliştirmeleri:

    • COPY TO komutu sonunda yerel JSON çıktısını destekliyor (varsayılan olarak NDJSON, isteğe bağlı olarak JSON dizisi formatında). Bu, row_to_json() ve json_agg() gibi geçici çözümleri ortadan kaldırır ve daha hızlı, bellek açısından daha verimli çıktı sağlar.

    • COPY komutu artık bölümlenmiş tabloları (Parçalama (Partitioning)) doğrudan kopyalayabilir, böylece COPY (SELECT * FROM ...) TO gibi geçici çözümlere gerek kalmaz ve yaklaşık %7-8 performans artışı sağlanır.

    • COPY FROM komutuna SKIP HEADER ve ON_ERROR SET_NULL seçenekleri eklenmiştir. Bu, dış kaynaklardan gelen verileri daha esnek bir şekilde içe aktarmayı sağlar.

  • Parçalama (Partitioning): Bölümlenmiş tabloları yeniden düzenlemeyi kolaylaştırmak için ALTER TABLE ... MERGE PARTITIONS ve ALTER TABLE ... SPLIT PARTITIONS komutları eklenmiştir. Bu, veri hacmi değiştikçe bölümlendirme stratejilerini dinamik olarak ayarlama esnekliği sunar.


Yükseltme ve Uyumluluk Notları

Her büyük sürümde olduğu gibi, PostgreSQL 19’a yükseltme yapmadan önce dikkate alınması gereken bazı uyumluluk değişiklikleri bulunmaktadır:

  • JIT Varsayılan Değişikliği: JIT derlemesinin varsayılan olarak devre dışı bırakılması, uygulamanızın performansını etkileyebilir; gerektiğinde manuel olarak etkinleştirilmesi gerekebilir.

  • TOAST Sıkıştırma Varsayılanı: default_toast_compression’ın lz4 olarak değiştirilmesi, TOAST verilerinin depolama ve erişimini etkileyebilir.

  • MD5 Kimlik Doğrulama Uyarıları: md5 kimlik doğrulamasının devam eden kullanımının desteği kademeli olarak kaldırıldığı için, başarılı md5 kimlik doğrulamalarından sonra istemciye uyarılar gönderilecektir.

  • RADIUS Kimlik Doğrulama Desteği Kaldırıldı.

  • beta Testi: Final sürümünden önce, uygulamalarınızı ve iş yüklerinizi beta sürümüyle test etmek, olası hataları ve regresyonları tespit etmek için kritik öneme sahiptir.


Sonuç

PostgreSQL 19, önceki sürümlerin güçlü mirasını devralan ve birçok cephede ilerleme kaydeden kapsamlı bir sürüm olarak öne çıkıyor. REPACK CONCURRENTLY ile çevrimiçi bakım, pg_plan_advice ile sorgu planı kontrolü, Paralel Autovacuum ile iyileştirilmiş performans, ON CONFLICT DO SELECT ile geliştirilmiş SQL yetenekleri ve Mantıksal Replikasyondaki gelişmeler, bu sürümün sadece birkaç önemli başlığıdır.


Uygulama geliştiricilerinden veritabanı operatörlerine, performans meraklılarından PostgreSQL üzerinde çözüm geliştirenlere kadar her kesimden kullanıcı için değerli yenilikler barındırıyor. PostgreSQL 19, açık kaynak ilişkisel veritabanının lideri olarak konumunu pekiştirmeye devam ederken, veritabanı ekosistemine önemli bir katkı sağlamaya hazırlanıyor.


Final sürümü yaklaştıkça, bu heyecan verici yenilikleri keşfetmek ve uygulamalarınızda kullanmak için hazır olun!

bottom of page