Ulaşım
- Adres: 2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0505 532 36 38 - eMail: admin@alestaweb.com
Veritabanınızı tek satır kod değiştirmeden 3 kata kadar hızlandırmak mümkün mü? PostgreSQL 18 ile bazı iş yüklerinde gerçekten mümkün. Dünyanın en popüler açık kaynak ilişkisel veritabanlarından biri olan PostgreSQL, 18. büyük sürümüyle (major release) en büyük performans atılımlarından birini yaptı: yeni bir asenkron I/O (asynchronous I/O) alt sistemi. Ama yenilik bununla sınırlı değil — uuidv7() fonksiyonu, sanal sütunlar (virtual columns), skip scan ve OAuth kimlik doğrulama da geldi. Alesta Web olarak bu rehberde PostgreSQL 18'in en önemli yeniliklerini sade örneklerle anlatıyoruz.
PostgreSQL 18, 25 Eylül 2025'te yayınlandı ve üretim ortamı için kararlı (production-ready) durumda. O tarihten beri bakım sürümleri de geldi, yani artık olgunlaşmış bir sürüm. Eğer hâlâ PostgreSQL 17 veya daha eskisini kullanıyorsanız, 18'e geçmek için epeyce nedeniniz var.
PostgreSQL sürüm numaralandırması basittir: her yıl bir büyük sürüm (major version) çıkar ve ardından küçük bakım (minor) sürümleri gelir. Büyük sürümler yeni özellikler getirir; küçük sürümler hata ve güvenlik düzeltmeleri içerir. Alesta Web olarak müşteri sunucularında her zaman güncel minor sürümü öneririz.
İşte asıl yıldız özellik. PostgreSQL 18, yepyeni bir asenkron I/O (AIO) alt sistemi getiriyor. Peki bu ne demek ve neden bu kadar önemli?
Eski sistemde PostgreSQL diskten veri okurken her isteği sırayla bekliyordu: bir isteği gönder, bitsin, sonra diğerini gönder. Bu yaklaşım, özellikle yavaş depolama veya yüksek gecikmeli (latency) ortamlarda boşa zaman harcanmasına yol açıyordu.
Yeni AIO alt sistemi ise birden fazla I/O isteğini aynı anda gönderebiliyor (issue multiple I/O requests concurrently). Yani veritabanı bir okumayı beklerken boş durmuyor, paralel başka okumalar başlatıyor. Sonuç? Depolamadan okuma yapan iş yüklerinde 3 kata kadar performans artışı ölçüldü.
- Sequential scan (sıralı tarama) - Bitmap heap scan (bitmap yığın taraması) - VACUUM (bakım/temizlik işlemi)
Bu iyileştirmenin en güzel yanı: çoğu durumda uygulama kodunuzu değiştirmenize gerek yok. Büyük tablolarda sıralı tarama yapan raporlar ve VACUUM işlemleri otomatik olarak hızlanır. Tam da "ücretsiz performans" denilen şey.
UUID kullananlar bu yeniliği sevecek. PostgreSQL 18 artık yerleşik bir uuidv7() fonksiyonu sunuyor. Bu fonksiyon, zaman sıralı (timestamp-ordered) UUID'ler üretir.
Klasik rastgele UUID'lerin (uuidv4) bir sorunu vardır: tamamen rastgele oldukları için indekslerde dağınık dururlar ve ekleme (insert) performansını düşürürler. uuidv7 ise zaman bilgisini içerdiği için sıralıdır — yani ardışık eklenen kayıtlar indekste yan yana durur. Bu da hem ekleme performansını hem de önbellek (cache) verimliliğini artırır.
-- Zaman sirali UUID uret
SELECT uuidv7();
-- Tablo varsayilani olarak kullan
CREATE TABLE siparisler (
id uuid PRIMARY KEY DEFAULT uuidv7(),
tutar numeric,
olusturma timestamptz DEFAULT now()
);
PostgreSQL'de "generated column" (üretilen sütun) zaten vardı, ama bunlar diske yazılıyordu (stored). PostgreSQL 18 ile artık sanal (virtual) generated sütunlar da var.
Fark şu: sanal sütun değeri diskte saklanmaz, okuma anında hesaplanır (computed during read operations). Bu da disk alanından tasarruf sağlar ve yazma işlemlerini hafifletir. Üstelik PostgreSQL 18'de sanal sütunlar artık varsayılan davranış oldu.
CREATE TABLE urunler (
fiyat numeric,
kdv_orani numeric DEFAULT 0.20,
-- okuma aninda hesaplanir, diske yazilmaz
kdvli_fiyat numeric GENERATED ALWAYS AS (fiyat * (1 + kdv_orani)) VIRTUAL
);
Çok sütunlu (multicolumn) B-tree indeksleriniz var mı? PostgreSQL 18 onları daha çok durumda kullanabiliyor artık. Yeni skip scan desteği sayesinde, sorgunuz indeksin ilk sütununu filtrelemese bile veritabanı indeksi yine de kullanabiliyor.
Önceden, örneğin (bolge, tarih) şeklinde bir indeksiniz varsa ve sorgunuzda sadece tarih filtresi olsaydı, PostgreSQL çoğu zaman bu indeksi kullanamaz, tüm tabloyu tarardı. Skip scan ile artık ilk sütunun farklı değerleri arasında "atlayarak" (skip) indeksi kullanabiliyor.
Skip scan, ilk sütunun az sayıda farklı değere (low cardinality) sahip olduğu durumlarda en etkilidir. Mevcut indeks tasarımlarınızı gözden geçirmek için iyi bir fırsat. Alesta Web olarak sorgu planlarını EXPLAIN ANALYZE ile düzenli inceliyoruz.
Bu küçük ama çok kullanışlı bir yenilik. Artık INSERT, UPDATE, DELETE ve MERGE komutlarının RETURNING bölümünde satırın hem eski (OLD) hem de yeni (NEW) değerlerine erişebiliyorsunuz.
-- Guncellemeden once ve sonraki degeri tek sorguda al UPDATE hesaplar SET bakiye = bakiye - 100 WHERE id = 5 RETURNING old.bakiye AS onceki, new.bakiye AS sonraki;
Daha önce bunun için ayrı bir SELECT veya tetikleyici (trigger) yazmanız gerekiyordu. Şimdi tek sorguda hallediliyor — özellikle denetim (audit) kayıtları tutarken çok işe yarıyor.
PostgreSQL 18, yerleşik OAuth kimlik doğrulama desteği getiriyor. Bu, kurumsal ortamlar için önemli bir adım: kullanıcılar veritabanına merkezi kimlik sağlayıcıları (identity provider) üzerinden bağlanabiliyor.
Yani artık her veritabanı kullanıcısı için ayrı şifre yönetmek yerine, mevcut kurumsal kimlik altyapınızla (örneğin tek oturum açma / single sign-on) entegre olabilirsiniz. Bu hem güvenliği hem de yönetim kolaylığını artırır.
OAuth yapılandırması doğru kurulmazsa erişim sorunlarına yol açabilir. Üretim ortamında devreye almadan önce mutlaka test ortamında deneyin ve yedeğinizi (backup) alın. Alesta Web olarak kimlik doğrulama değişikliklerini her zaman önce test sunucusunda doğrularız.
PostgreSQL 18, büyük sürüm yükseltmelerini de iyileştirdi. Yükseltme süresi kısaldı ve yükseltme sonrası beklenen performansa ulaşma süresi azaldı. Yine de doğru yapmak için birkaç altın kural:
pg_dumpall veya fiziksel yedek olmadan yükseltmeye başlamayın.ANALYZE çalıştırın.Bu makaledeki bilgiler aşağıdaki resmi kaynaklardan derlenmiştir (compiled from official sources):
Alesta Web olarak tüm özellikleri resmi sürüm notlarıyla doğruladık ve test ettik.
Sürüm Eylül 2025'te çıktı ve artık bakım sürümleriyle olgunlaştı. Asenkron I/O performans kazanımı ve diğer yenilikler düşünüldüğünde yükseltme değer. Ancak üretim ortamında önce test sunucusunda uygulamanızın uyumunu doğrulayın ve mutlaka yedek alın.
Çoğu durumda hayır — sıralı tarama ve VACUUM gibi işlemler otomatik faydalanır. İleri düzey ayar için ilgili yapılandırma parametrelerini inceleyebilirsiniz, ama temel kazanım için ek bir şey yapmanıza gerek yoktur.
Birincil anahtar (primary key) olarak UUID kullanıyorsanız, ekleme performansı ve indeks verimliliği için uuidv7 genelde daha iyi seçimdir çünkü zaman sıralıdır. Tamamen tahmin edilemez bir değer gerektiğinde (örneğin gizli token) uuidv4 hâlâ uygundur.
PostgreSQL 18, büyük sürüm yükseltmelerini hızlandırdı. pg_upgrade aracıyla geçiş genelde sorunsuz ilerler. Yükseltme sonrası ANALYZE çalıştırmayı ve en güncel minor sürümü kullanmayı unutmayın.
Değer sık değişen kaynak sütunlardan türetiliyorsa ve disk tasarrufu önemliyse sanal (virtual) sütun mantıklıdır. Değere çok sık ve hızlı erişiyorsanız, hesaplama maliyetini ortadan kaldırmak için saklanan (stored) sütun daha uygun olabilir.
PostgreSQL 18, performans ve geliştirici deneyimini aynı anda iyileştiren güçlü bir büyük sürüm. Asenkron I/O ile gelen hız, çoğu kullanıcı için tek başına yükseltme nedeni.
Hızlı Özet / Quick Summary:
uuidv7() ile zaman sıralı, indeks dostu UUIDFaydalı Linkler / Useful Links:
Veritabanı yükseltme, performans ayarı (tuning) veya sunucu yönetiminde desteğe ihtiyaç duyarsanız Alesta Web ekibi yanınızda.
© 2026 Alesta Web — Tüm hakları saklıdır.