13 puan yazan GN⁺ 2024-09-27 | 1 yorum | WhatsApp'ta paylaş
  • PostgreSQL 17; önemli performans artışları, bellek yönetimi iyileştirmeleri, depolama erişimi optimizasyonu, yüksek eşzamanlı iş yüklerinde iyileştirmeler, toplu yükleme ve dışa aktarma hızlarında artış ile dizin sorgusu yürütmesinde geliştirmeler içeriyor

Sistem genelinde performans artışları

  • Normal çalışma için kritik olan PostgreSQL vacuum sürecinin dahili bellek yapısı iyileştirildi ve bellek kullanımı 20 kata kadar azaltıldı
    • vacuum hızı artırılırken paylaşılan kaynak kullanımı azaltıldı; böylece iş yükleri için daha fazla kaynak kullanılabiliyor
  • I/O katmanının performansı sürekli olarak iyileştirildi
    • Write-Ahead Log (WAL) işleme iyileştirmeleri sayesinde yüksek eşzamanlı iş yüklerinde yazma throughput'u 2 kata kadar artıyor
    • Yeni streaming I/O arayüzü, sıralı taramaların (bir tablodaki tüm verilerin okunması) hızını ve ANALYZE komutunun yürütme planı istatistiklerini güncelleme hızını artırıyor
  • Performans iyileştirmeleri sorgu yürütmeye de genişletildi
    • B-tree dizinleriyle (PostgreSQL'in varsayılan dizin yöntemi) kullanılan IN koşulu içeren sorguların performansı iyileştirildi
    • BRIN dizinlerinde paralel derleme destekleniyor
  • Sorgu planlama için çeşitli iyileştirmeler içeriyor
    • NOT NULL kısıtları için optimizasyon
    • Ortak tablo ifadelerinin (WITH sorguları) işlenmesinde iyileştirme
  • bit_count fonksiyonunda AVX-512 kullanımı gibi hesaplama hızlandırma için SIMD (Single Instruction/Multiple Data) desteği genişletildi

Güçlü geliştirici deneyimi daha da genişletildi

  • PostgreSQL, JSON desteği ekleyen ilk ilişkisel veritabanıydı (2012)
  • PostgreSQL 17, SQL/JSON standardı uygulamasını daha da genişletiyor
    • JSON_TABLE ile JSON verileri standart PostgreSQL tablolarına dönüştürülebiliyor
    • SQL/JSON constructor'ları (JSON, JSON_SCALAR, JSON_SERIALIZE) ve sorgu fonksiyonları (JSON_EXISTS, JSON_QUERY, JSON_VALUE) destekleniyor
    • JSON verilerini PostgreSQL'in yerel veri tiplerine (sayı, boolean, string, tarih/saat) dönüştürmeye odaklanan jsonpath ifadeleri eklendi
  • MERGE komutuna RETURNING bölümü ve view güncelleme yeteneği eklendi
  • Toplu yükleme ve veri dışa aktarma işlevleri geliştirildi
    • COPY komutuyla büyük satırlar dışa aktarılırken 2 kata kadar performans artışı sağlanıyor
    • Kaynak ve hedef encoding aynı olduğunda COPY performansı iyileştirildi
    • Ekleme hatası oluşsa bile içe aktarmayı sürdürebilen ON_ERROR seçeneği eklendi
  • Partition'lar ve uzak PostgreSQL instance'larına dağılmış verileri yönetme yetenekleri genişletildi
    • Partitioned table'larda ID sütunları ve exclusion constraint kullanımı destekleniyor
    • postgres_fdw kullanılarak EXISTS ve IN alt sorguları uzak sunucuya push down edilebiliyor
  • Yerleşik, platformdan bağımsız ve değişmez bir collation provider içeriyor
    • C collation'a benzer sıralama semantiği sunuyor ancak SQL_ASCII yerine UTF-8 encoding kullanıyor
    • Bu yeni collation provider kullanıldığında, metin tabanlı sorgular PostgreSQL'in çalıştığı konumdan bağımsız olarak aynı sıralama sonucunu döndürüyor

Yüksek erişilebilirlik ve ana sürüm yükseltmeleri için mantıksal çoğaltma iyileştirmeleri

  • Mantıksal çoğaltma, verileri gerçek zamanlı olarak stream etmek için kullanılıyor
  • Önceki sürümlerde ana sürüm yükseltmeleri sırasında mantıksal çoğaltma slot'larının silinmesi gerekiyordu; bu da yükseltme sonrasında abonelere verilerin yeniden senkronize edilmesini gerektiriyordu
  • PostgreSQL 17 ile birlikte mantıksal çoğaltma slot'larını silme gerekliliği ortadan kalktı ve yükseltme süreci basitleşti
  • Mantıksal çoğaltma için failover kontrol özelliği içeriyor; böylece yüksek erişilebilirlik ortamlarında daha dayanıklı dağıtımlar yapılabiliyor
  • pg_createsubscriber komut satırı aracı tanıtıldı; bu araç fiziksel bir replikayı yeni bir mantıksal replikaya dönüştürebiliyor

Güvenlik ve operasyon yönetimi için daha fazla seçenek

  • PostgreSQL 17, kullanıcıların veritabanı sisteminin genel yaşam döngüsünü yönetme yöntemlerini daha da genişletiyor
  • ALPN kullanılırken doğrudan TLS handshake yapılmasını sağlayan sslnegotiation adlı yeni bir TLS seçeneği eklendi
  • Bakım görevlerini gerçekleştirme yetkisi veren ön tanımlı pg_maintain rolü eklendi
  • PostgreSQL ile gelen yedekleme aracı pg_basebackup artık incremental backup destekliyor ve tam yedeği yeniden oluşturmak için pg_combinebackup aracı eklendi
  • pg_dump, dump dosyası oluştururken hangi nesnelerin dahil edileceğini seçmeye yarayan yeni --filter seçeneğini içeriyor
  • İzleme ve analiz işlevleri geliştirildi
    • EXPLAIN, yerel I/O bloklarını okuma ve yazma için harcanan süreyi gösteriyor
    • SERIALIZE ve MEMORY adlı iki yeni seçenek eklendi: ağ üzerinden aktarım için veri dönüştürmeye harcanan süreyi ve kullanılan bellek miktarını görmekte yararlı
  • Dizin temizleme ilerlemesi raporlanıyor
  • pg_wait_events sistem görünümü eklendi; pg_stat_activity ile birlikte kullanıldığında etkin oturumların neden beklediğine dair içgörü sağlıyor

1 yorum

 
GN⁺ 2024-09-27
Hacker News görüşleri
  • PostgreSQL 17'nin yeni sürümü için tebrikler ve çeşitli iyileştirmelerden bahsediliyor

    • Vacuum işleminin bellek yapısındaki iyileştirmeler sayesinde bellek kullanımı 20 kata kadar azaldı
    • Yedekleme aracı pg_basebackup için artımlı yedekleme desteği ve pg_combinebackup aracının eklenmesi
    • External Data Wrapper (FDW) iyileştirmeleri sayesinde uzak sunucularda EXISTS ve IN alt sorgularının işlenebilmesi
  • JSON özelliklerinin kullanışlılığına dair görüşler

    • İlişkisel veritabanlarında JSON özelliklerinin faydasına vurgu yapılıyor
    • Veriden JSON üretme yeteneğinin önemine değiniliyor
    • JSON_TABLE özelliğini öğrenme konusunda beklenti dile getiriliyor
  • JSON_TABLE özelliğinin kullanım deneyimi paylaşılıyor

    • JSON yanıtlarını jsonb sütununda saklayıp görünüm yazarak parse etme yaklaşımının kullanışlılığı vurgulanıyor
    • Yeni PostgreSQL özellik dokümantasyonunda bu yaklaşımı görmenin sevindirici olduğu belirtiliyor
  • PostgreSQL 17'deki performans artışları ve UX iyileştirmelerinden bahsediliyor

    • Partition edilmiş tablolarda ID sütunu ve exclusion constraint desteği
    • Platformdan bağımsız ve değişmez bir collation provider eklenerek metin tabanlı sorgularda tutarlı sıralama sonuçları garanti ediliyor
  • Değişiklik günlüğü hakkında izlenim

    • UUIDv7 PR'ın dahil edilmemesi hayal kırıklığı yaratmış
  • Açık kaynak yazılıma güven sorunu nedeniyle Oracle'dan MSSQL'e geçme deneyimi paylaşılıyor

    • "İş yazılımlarında açık kaynağa güvenilemez" diyen bir yönetici görüşü aktarılıyor
  • Postgres'in sürekli gelişimi için teşekkür ediliyor ve Incremental View Maintenance (IVM) eklentisinin resmî olarak desteklenmesi umuluyor

  • PostgreSQL için büyük sürüm yükseltme desteğine dair beklenti

  • Postgres'e sistem sürümlü tabloların gelmesi umuluyor

  • Postgres'te JSON entegrasyonunun gelişmesinin yeni web framework paradigmasını mümkün kılacağı bekleniyor