Furkan KapukayaYazılım geliştirme
Backend, API ve Veritabanı3 dk okuma

PostgreSQL 18 Yenilikleri: Asenkron I/O, uuidv7(), Sanal Sütunlar ve Hızlı Yükseltme

Eylül 2025'te çıkan PostgreSQL 18'in asenkron I/O altyapısı, yerleşik uuidv7() fonksiyonu, varsayılan sanal üretilmiş sütunlar, B-tree skip scan, OAuth kimlik doğrulama, pg_upgrade istatistik koruma ve yükseltme önerileri.

PostgreSQL 18, Eylül 2025'te yayımlandı ve 2026'da bulut sağlayıcılarının çoğunda yönetilen hizmet olarak kullanılabilir hale geldi. Bu sürüm; disk okumalarını hızlandıran asenkron I/O altyapısı, yerleşik UUIDv7 desteği ve geliştirici deneyimini iyileştiren birçok özellik getirdi. SQL Server ile karşılaştırma yapıyorsanız PostgreSQL mi SQL Server mı yazımıza da bakabilirsiniz. Bu yazıda PostgreSQL 18'in öne çıkan yeniliklerini özetliyoruz.

1. Asenkron I/O altyapısı

PostgreSQL 18, disk okumalarını eşzamansız (asynchronous) yapabilen yeni bir I/O alt sistemi getirdi. Sıralı taramalar, bitmap heap taramaları ve vakum gibi işlemlerde veritabanı, bir bloğun okunmasını beklerken diğer blokları da talep edebiliyor. Özellikle bulut disklerinde gecikmenin yüksek olduğu ortamlarda büyük tablolarda belirgin hız artışı görülebiliyor. Davranış io_method ayarıyla yapılandırılır.

2. Yerleşik uuidv7()

PostgreSQL 18 ile zaman sıralı UUID üreten uuidv7() fonksiyonu yerleşik geldi:

CREATE TABLE siparis (
  id uuid PRIMARY KEY DEFAULT uuidv7(),
  musteri_id bigint NOT NULL,
  olusturma timestamptz NOT NULL DEFAULT now()
);

Rastgele UUIDv4'e göre indeks parçalanmasını azaltır ve ekleme performansını iyileştirir. Neden önemli olduğunu UUIDv7 nedir yazımızda ayrıntılı anlattık.

3. Sanal üretilmiş sütunlar varsayılan

Üretilmiş (generated) sütunlar artık varsayılan olarak sanal: Değer diske yazılmaz, okunurken hesaplanır. Disk alanından tasarruf edilir; sık okunan ve pahalı hesaplanan değerler için hâlâ STORED seçeneği kullanılabilir.

ALTER TABLE urun
  ADD COLUMN kdvli_fiyat numeric GENERATED ALWAYS AS (fiyat * 1.20);

4. B-tree skip scan

Çok sütunlu bir indeksin ilk sütunu sorguda koşul olarak kullanılmasa bile, PostgreSQL 18 bazı durumlarda indeksi "atlayarak" kullanabiliyor. Örneğin (sube_id, tarih) indeksi, yalnızca tarihe göre filtrelenen sorgularda da işe yarayabilir. Bu, gereksiz ek indeks ihtiyacını azaltır. İndeks tasarımının temelleri için veritabanı indeksi yazımıza bakın.

5. RETURNING içinde OLD ve NEW

UPDATE, DELETE ve MERGE komutlarında RETURNING ile hem eski hem yeni değerleri döndürmek mümkün. Denetim kaydı (audit log) ve değişiklik takibi için kullanışlı.

UPDATE stok SET miktar = miktar - 1
WHERE urun_id = 42
RETURNING old.miktar AS onceki, new.miktar AS sonraki;

6. Zamansal kısıtlamalar

Birincil ve benzersiz anahtarlarda WITHOUT OVERLAPS ile zaman aralıklarının çakışmasını engelleyen kısıtlamalar tanımlanabiliyor. Randevu, rezervasyon ve fiyat geçerlilik dönemleri gibi senaryolar için doğal bir çözüm.

7. Güvenlik ve yönetim

  • OAuth kimlik doğrulama: Kurumsal kimlik sağlayıcılarla entegrasyon kolaylaştı.
  • MD5 parola uyarısı: Eski MD5 parola yöntemi kullanımdan kaldırılma yolunda; SCRAM-SHA-256'ya geçin.
  • pg_upgrade ile istatistik koruma: Ana sürüm yükseltmesinden sonra planlayıcı istatistikleri korunuyor; yükseltme sonrası yavaşlık dönemi kısalıyor.
  • Veri sayfası sağlama toplamı: Yeni kümelerde varsayılan olarak açık.

Yükseltme önerileri

  1. Yedek alın ve geri yüklemeyi test edin. Bkz. yedekleme stratejisi.
  2. Test ortamında pg_upgrade veya mantıksal çoğaltma ile yükseltmeyi deneyin.
  3. Kullandığınız eklentilerin (PostGIS, pgvector vb.) PostgreSQL 18 sürümlerini kontrol edin.
  4. Uygulamanızın veritabanı sürücüsünü güncelleyin; .NET için Npgsql.
  5. Kritik sorguların çalışma planlarını yükseltme öncesi ve sonrası karşılaştırın.

Sık sorulan sorular

PostgreSQL 18'e hemen geçmeli miyim?

Yönetilen hizmet kullanıyorsanız sağlayıcının desteklediği en güncel kararlı sürüme planlı geçiş mantıklıdır. Kendi sunucunuzda çalışıyorsanız ilk ara sürümleri (18.x) bekleyip test ederek geçmek daha temkinlidir.

uuidv7() için eklenti gerekiyor mu?

Hayır, PostgreSQL 18'de yerleşik. Önceki sürümlerde uygulama tarafında veya eklentiyle üretmek gerekiyordu.

Asenkron I/O her sorguyu hızlandırır mı?

Hayır. Özellikle büyük okuma işlemlerinde fark yaratır; küçük ve indeksli sorgularda değişim sınırlı olabilir.

Sonuç

PostgreSQL 18, performans ve geliştirici deneyimi açısından güçlü bir sürüm. uuidv7(), sanal sütunlar ve zamansal kısıtlamalar günlük işleri sadeleştiriyor. Veritabanı yükseltmesi veya performans iyileştirmesi için bizimle iletişime geçebilirsiniz.

  • #PostgreSQL
  • #Postgres18
  • #Veritabanı
  • #Backend
  • #SQL
  • #Performans