Makale Başlıkları
Kisaca
PostgreSQL, 35 yili askin gecmise sahip, standartlara siki uyumlu, nesne-iliskisel acik kaynak bir veritabanidir. JSONB, dizi ve cografi veri gibi zengin tipleri, tam ACID guvencesi ve karmasik analitik sorgulardaki gucuyle yeni projelerin gozdesi haline geldi. MySQL ise basit, okuma yogun web uygulamalarinda ve WordPress dunyasinda hala yaygin.
- Ubuntu’da paket kurulumu kumeyi (cluster) otomatik olusturur; AlmaLinux/RHEL’de postgresql-setup –initdb elle calistirilir.
- PostgreSQL karmasik JOIN, CTE ve JSON sorgularinda 2-13 kata kadar hizli; MySQL basit SELECT’lerde yaklasik %15-25 onde.
- Veri yogun uygulamalar icin tam kontrol gerektiginden ayrilmis kaynakli bir VPS veya sunucu en saglikli zemindir.
PostgreSQL, 35 yili askin gelistirme gecmisine sahip, guclu ve standartlara son derece uyumlu acik kaynakli bir nesne-iliskisel veritabani sistemidir. Tam ACID uyumu, gelismis veri tipleri ve karmasik sorgulardaki gucuyle ozellikle veri yogun ve kurumsal uygulamalarda tercih edilir. Bu rehberde PostgreSQL’in ne oldugunu, nasil kurulacagini, MySQL’den farklarini ve performansi etkileyen pratik ayarlari adim adim anlatiyoruz.
PostgreSQL’i tam kontrolle ve komsu yuk olmadan calistirmak icin ayrilmis kaynakli bir VPS/sunucu idealdir. Yapilandirma uzerinde tam yetki, root erisimi ve garantili RAM/CPU bu tur veri yogun is yuklerinde fark yaratir.
PostgreSQL Nedir?
PostgreSQL (kisaca Postgres), yalnizca tablolari degil; diziler (array), JSON belgeleri, cografi veriler (PostGIS ile) ve kendi tanimladiginiz ozel tipler gibi zengin veri yapilarini da destekleyen bir “nesne-iliskisel” veritabanidir. Cok surumlu eszamanlilik kontrolu (MVCC) sayesinde yogun okuma-yazma altinda bile okuyucular yazicilari, yazicilar okuyuculari kilitlemeden tutarli calisir. Izin verici (permissive) PostgreSQL lisansiyla dagitilir ve tamamen ucretsizdir; ticari kullanimda dahi ek lisans bedeli istemez.
PostgreSQL’i one cikaran sey yalnizca veri saklamasi degil, veritabanini bir uygulama platformu gibi genisletebilmenizdir. Saklanan yordamlari (stored procedure) PL/pgSQL, PL/Python veya PL/Perl ile yazabilir; kendi fonksiyon, operator ve veri tiplerinizi tanimlayabilir; pgvector gibi 300’u askin eklentiyle yapay zeka vektor aramasindan zaman serisi verisine kadar pek cok senaryoyu ayni motorda cozebilirsiniz.
Guncel Surumler ve Surum Politikasi
2026 itibariyla PostgreSQL’in kararli ana surumu 18 ailesidir (18.4 gibi bakim guncellemeleriyle). Bir sonraki ana surum olan PostgreSQL 19 beta asamasindadir ve yil ici genel kullanima cikmasi beklenmektedir. PostgreSQL projesi her ana surumu yaklasik 5 yil destekler; bu sure boyunca yilda dort kez yayinlanan kucuk surum guncellemeleriyle (orn. 18.1, 18.2) guvenlik yamalari ve hata duzeltmeleri saglanir. Uretim ortaminda her zaman destekteki bir ana surumu kullanmak ve kucuk guncellemeleri duzenli uygulamak en saglikli yaklasimdir.
PostgreSQL Kurulumu
Asagidaki adimlar, en yaygin iki dagitim ailesi icin kurulumu gosterir. Komutlari root yetkili (sudo) bir kullaniciyla calistirin.
# Ubuntu / Debian sudo apt update sudo apt install postgresql postgresql-contrib sudo systemctl enable --now postgresql # AlmaLinux / Rocky / RHEL (initdb ZORUNLU) sudo dnf install -y postgresql-server postgresql-contrib sudo postgresql-setup --initdb sudo systemctl enable --now postgresql
Onemli fark: Ubuntu/Debian paketi veritabani kumesini (cluster) otomatik olustururken, AlmaLinux/RHEL’de postgresql-setup --initdb komutunu elle calistirmaniz zorunludur. Bu adimi atlarsaniz servis baslamaz ve “data directory is empty” benzeri hatalar alirsiniz.
En guncel ana surumu istiyorsaniz, dagitimin varsayilan deposu yerine resmi PostgreSQL deposunu (PGDG) ekleyebilirsiniz. Boylece dagitimla gelen eski surume bagli kalmaz, surumler arasinda gecis yapabilirsiniz.
Kurulumu Dogrulama
# Servis durumu sudo systemctl status postgresql # Surum kontrolu psql --version # postgres kullanicisiyla baglanma sudo -u postgres psql -c "SELECT version();"
Kurulumda postgres adinda bir sistem ve veritabani superkullanicisi otomatik olusur. Tum yonetimsel islemleri bu kullanici uzerinden baslatabilirsiniz.
Kullanici ve Veritabani Olusturma
Once postgres superkullanicisiyla psql kabugunu acin:
sudo -u postgres psql
Ardindan rolu (kullaniciyi) ve veritabanini olusturun:
CREATE USER kullanici WITH PASSWORD 'gizli_parola'; CREATE DATABASE mydb OWNER kullanici; GRANT ALL PRIVILEGES ON DATABASE mydb TO kullanici; q
Iyi uygulama notu: PostgreSQL 15 ve sonrasinda yeni bir veritabaninin public semasinda varsayilan olarak siradan kullanicilar tablo olusturamaz. Uygulamanizin tablo yaratmasi gerekiyorsa, semayi sahibine acikca yetkilendirin (orn. GRANT ALL ON SCHEMA public TO kullanici;) veya uygulamaya ozel bir sema kullanin. Bu degisiklik, eski surumlere alismis kullanicilarin sik takildigi noktalardan biridir.
Komut satiri araclari createdb, createuser ve dropdb ile de ayni islemler kabuk disindan yapilabilir.
Uzaktan Baglanti Icin pg_hba.conf
PostgreSQL varsayilan olarak yalnizca yerel baglantilara izin verir. Uzaktan baglanmak isterseniz iki dosyayi duzenlemeniz gerekir: postgresql.conf icinde listen_addresses degerini genisletin; pg_hba.conf icinde guvenli bir kimlik dogrulama satiri (tercihen scram-sha-256) ekleyin. Sunucuyu internete tamamen acmak yerine yalnizca guvenilir IP araliklarina izin vermek ve mumkunse SSL/TLS zorunlu kilmak en guvenli yontemdir.
PostgreSQL ile MySQL Farki
Iki sistem de olgun, acik kaynak ve genis topluluga sahip. Ancak tasarim felsefeleri farkli: PostgreSQL standartlara uyum ve genisletilebilirlik etrafinda sekillenirken, MySQL hiz ve kolay kurulum odaginda buyumustur. Asagidaki tablo temel ayrimlari ozetler.
| Kriter | PostgreSQL | MySQL |
|---|---|---|
| Tur | Nesne-iliskisel (ORDBMS) | Iliskisel (RDBMS) |
| ACID | Her zaman tam (cekirdekte) | InnoDB motorunda tam |
| JSON | JSON + JSONB (indekslenebilir) | JSON (sinirli indeks) |
| Veri tipleri | Zengin (array, range, ozel tip) | Daha sinirli |
| Eszamanlilik | MVCC (okuyucu/yazici kilitlemez) | InnoDB’de MVCC |
| Eklenti ekosistemi | 300+ eklenti (pgvector dahil) | Daha az, motor tabanli |
| Lisans | Izin verici (BSD benzeri) | Cift lisans (GPL/ticari) |
| Guclu oldugu alan | Karmasik sorgu, analitik, JSON | Okuma yogun web, basit sorgu |
Performans: Hangisi Daha Hizli?
“Hangisi daha hizli?” sorusunun tek cevabi yoktur; is yukune baglidir. Gunumuzdeki karsilastirmalar su tabloyu cizer:
| Senaryo | Daha hizli | Yaklasik fark |
|---|---|---|
| Basit okuma (OLTP SELECT) | MySQL | ~%15-25 daha hizli |
| Karmasik JOIN / CTE / alt sorgu | PostgreSQL | 2-13 kata kadar hizli |
| JSON / belge sorgulari | PostgreSQL | ~3-4 kat hizli |
| Analitik ve yazma yogun is yuku | PostgreSQL | Belirgin ustun |
Pratikte cogu is yukunde iki sistem birbirine yakindir (genelde %30 bandinda). Basit, okuma agirlikli bir web sitesi calistiriyorsaniz MySQL fazlasiyla yeterli olur; veri modeliniz karmasiklasiyor, analitik sorgular, JSON belgeleri veya cografi veri devreye giriyorsa PostgreSQL acik ara konfor saglar. Egilim de bu yonde: yeni projeler giderek daha sik PostgreSQL’i varsayilan secim olarak aliyor.
Lisans ve Maliyet
PostgreSQL’in izin verici lisansi, ticari urununuze gomseniz dahi ek lisans bedeli veya kaynak kodu acma zorunlulugu getirmez. MySQL ise GPL (acik kaynak) ve ticari lisans olmak uzere cift modelle dagitilir; tescilli (proprietary) urunlere gomulecekse ticari lisans gundeme gelebilir. Pek cok kurumun PostgreSQL’e yonelmesinde bu lisans rahatligi belirleyici olmustur.
Temel Bakim ve Performans Ipuclari
PostgreSQL’i kurmak kolaydir; saglikli tutmak ise birkac aliskanlik gerektirir. Veri yogun ortamlarda en cok ise yarayan baslangic adimlari sunlardir:
- VACUUM ve autovacuum: MVCC tasarimi nedeniyle guncellenen/silinen satirlar “olu” iz birakir. Otomatik vakum (autovacuum) bunlari temizler; yogun yazma yapilan tablolarda autovacuum esiklerini sikilastirmak sismeyi (bloat) onler.
- Indeksleme: Sik sorgulanan sutunlara B-tree; JSONB ve dizi aramalarinda GIN; cografi/aralik verilerde GiST indeksleri buyuk fark yaratir. Gereksiz indeks ise yazmayi yavaslatir, dengeyi olcerek kurun.
- Bellek ayarlari:
shared_buffers,work_memveeffective_cache_sizedegerlerini sunucu RAM’ine gore ayarlamak varsayilanlara gore ciddi hiz kazandirir. Bu yuzden garantili RAM sunan ayrilmis bir ortam onemlidir. - Yedekleme: Mantiksal yedek icin
pg_dump/pg_dumpall, fiziksel/nokta-bazli kurtarma icinpg_basebackup+ WAL arsivleme kullanin. Yedeginizi duzenli olarak geri yukleyerek test edin. - Izleme:
pg_stat_statementseklentisiyle en pahali sorgulari belirleyipEXPLAIN ANALYZEile plan inceleyin.
Bu islemler kok (root) erisimi ve sunucu ayarlarina mudahale gerektirdiginden, paylasimli ortamdansa kontrolun sizde oldugu bir bulut sunucu ya da fiziksel sunucu bu is yuku icin daha uygundur.
PostgreSQL Hangi Senaryoda Tercih Edilir?
PostgreSQL ozellikle su durumlarda one cikar: finansal ve kurumsal uygulamalar gibi mutlak tutarlilik gerektiren sistemler; cok sayida JOIN, alt sorgu ve pencere fonksiyonu iceren analitik raporlar; JSONB ile yari yapili veri saklayan modern uygulamalar; PostGIS ile cografi bilgi sistemleri; ve pgvector ile yapay zeka destekli arama/oneri sistemleri. MySQL ise blog, kucuk-orta olcekli kurumsal site ve WordPress gibi okuma agirlikli, basit semali projelerde halen pratik ve hizli bir tercihtir.
Hangi veritabanini secerseniz secin, altyapinin saglamligi performansin yarisidir. Alastyr’in Izmir’deki kendine ait veri merkezinde, N+1 yedekli altyapi, Dell EMC all-flash depolama ve Intel Xeon Gold islemcilerle veritabani is yukleriniz dusuk gecikmeyle calisir. Ister yonetimli bir hosting uzerinde MySQL’li uygulamanizi barindirin, ister tam kontrol istediginiz PostgreSQL projeniz icin ayrilmis bir sunucu kurun, 7/24 destek ve gunluk yedekleme standart olarak yaninizda.
Sikca Sorulan Sorular
PostgreSQL ucretsiz mi?
Evet. Izin verici (permissive) PostgreSQL lisansiyla tamamen ucretsizdir ve ticari urunlerde dahi ek lisans bedeli ya da kaynak kodu acma zorunlulugu getirmez.
PostgreSQL’in guncel surumu hangisi?
2026 itibariyla kararli ana surum PostgreSQL 18 ailesidir; bir sonraki ana surum olan PostgreSQL 19 beta asamasinda olup yil ici genel kullanima cikmasi beklenir. Uretimde her zaman destekteki bir ana surumu kullanmak onerilir.
AlmaLinux/RHEL’de PostgreSQL neden baslamiyor?
RHEL ailesinde paket, veritabani kumesini otomatik olusturmaz. Servisi baslatmadan once postgresql-setup --initdb komutunu elle calistirmaniz gerekir; aksi halde servis baslamaz.
JSONB nedir, JSON’dan farki ne?
JSONB, PostgreSQL’in ayristirilmis ikili JSON tipidir. JSON tipinden farkli olarak indekslenebilir (GIN), tekrar ayristirma gerektirmez ve belge sorgularinda cok daha hizlidir; bu nedenle cogu uygulamada JSONB tercih edilir.
PostgreSQL mi MySQL mi daha hizli?
Is yukune baglidir. MySQL basit okuma yogun sorgularda yaklasik %15-25 daha hizliyken, PostgreSQL karmasik JOIN, CTE ve JSON sorgularinda 2-13 kata kadar one gecer. Cogu gunluk senaryoda ikisi birbirine yakindir.
Ne zaman MySQL yerine PostgreSQL secmeliyim?
Karmasik sorgular, analitik raporlar, JSONB/dizi gibi zengin veri tipleri, cografi veri (PostGIS) veya vektor arama (pgvector) gerektiginde PostgreSQL daha uygundur. Basit, okuma agirlikli web siteleri icin MySQL yeterlidir.
PostgreSQL WordPress’i destekler mi?
WordPress varsayilan olarak MySQL/MariaDB kullanir. PostgreSQL daha cok ozel gelistirilen uygulamalarda tercih edilir; WordPress’i PostgreSQL ile calistirmak resmi olarak desteklenmez.
PostgreSQL’i uzaktan baglantiya nasil acarim?
postgresql.conf icinde listen_addresses degerini genisletip pg_hba.conf icine guvenli bir kimlik dogrulama satiri (tercihen scram-sha-256) eklemeniz gerekir. Guvenlik icin yalnizca guvenilir IP araliklarina izin verin ve mumkunse SSL/TLS kullanin.
PostgreSQL icin paylasimli hosting yeterli mi?
Hafif kullanimlar disinda genellikle degildir. VACUUM ayarlari, bellek parametreleri ve eklenti kurulumu kok erisimi gerektirir; bu nedenle veri yogun PostgreSQL projeleri icin ayrilmis kaynakli bir VPS, bulut ya da fiziksel sunucu daha uygundur.
PostgreSQL Icin Guclu Sunucu
Veri yogun uygulamalariniz icin bol RAM’li, NVMe SSD’li, root erisimli ayrilmis kaynakli VPS. Izmir’deki kendi veri merkezimizde, 7/24 destek ve gunluk yedekleme ile.





