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
- Yedek alın ve geri yüklemeyi test edin. Bkz. yedekleme stratejisi.
- Test ortamında pg_upgrade veya mantıksal çoğaltma ile yükseltmeyi deneyin.
- Kullandığınız eklentilerin (PostGIS, pgvector vb.) PostgreSQL 18 sürümlerini kontrol edin.
- Uygulamanızın veritabanı sürücüsünü güncelleyin; .NET için Npgsql.
- 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.