PostgreSQL bir işletim sistemine uygun mu? Linux'ta Windows'tan daha mı iyi?


26

PostgreSQL'i Windows Server 2003'te sorunsuz ve hızlı bir şekilde çalıştırıyorum, bu yüzden kendi soruma cevap vermek iyi görünüyor.

Ancak yeni bir proje başlatmak üzereyim ve kararlılık ve performans çok önemli olduğu için bir Linux kutusu kullanmayı düşünüyorum. PostgreSQL daha çok Linux dağıtımları üzerinde geliştiği için Linux'a bağlı kalmak daha iyi olur mu?


2
Bir platform seçmek, bir geliştirici tarafından yapılsa bile, bir sysadmin fonksiyonudur.
araqnid


Bana göre pg uzantıları, pencerelerden önce linux için paketlenmiş gibi görünüyor.
Neil McGuigan

Yanıtlar:


45

PostgreSQL, Linux’ta Windows’a göre kesinlikle daha hızlı çalışacaktır (ve bunu Windows portunu yazanlardan biri olarak söylüyorum ..) Unix tarzı bir mimari için tasarlandı ve bu aynı mimariyi Windows’a uyguladı. Windows'un iyi yapmak için tasarlanmadığı birçok şeyi yapar. İyi çalışıyor , ama aynı zamanda performans göstermiyor.

Örneğin, PostgreSQL, iş parçacığı değil bağlantı başına bir işlem modeli kullanır. Windows iş parçacığı yapmak için tasarlanmıştır. Uygulamanız çok sayıda bağlantı kurar ve bağlantıyı keserse, örneğin Windows'ta kesinlikle daha yavaş çalışacaktır.

Ayrıca, dosya sistemi etrafında NTFS'yi tam olarak desteklemeyen bazı varsayımlar da vardır.

Eğer gerçekten düşünmek gereken bir şey - Windows üzerinde ise, çoğu antivirüs ürünleri olacak onlar iş yükünün bu tip alışık olmadığından, PostgreSQL ile kullanıldığında dışarı böcek (örneğin 1000 farklı süreçler okuma ve aynı dosyaya yazma farklı kolları sayesinde). Bu, güçlü tavsiyelerin mümkünse her zaman bir virüsten koruma yazılımını kaldırmak olduğu anlamına gelir (yalnızca devre dışı bırakmak veya PostgreSQL işlemlerini / dosyalarını hariç tutmak genellikle yeterli değildir). Ve bu sadece performans nedeniyle değil aynı zamanda yük altında stabilite için de geçerlidir.


Teşekkürler! Yetkili bir cevabım olması güzel, ancak benim durumumda Windows'a bağlılık iyi geliyor: Çok az bağlantı var ve anti-virüs yok (ben de onlardan hoşlanmıyorum). Performans da harikaydı: Sanırım Windows önbelleğe alma ve IO hızı (güncel sürücülere sahip olduğunuzda) orada bana yardımcı oluyor ..

Bazı gerçek dünya performans ölçütlerini görmek güzel olurdu ...

1
BTW, bir bağlantı havuzunun kullanılması, daha yüksek işlem oluşturma / imha maliyetleri nedeniyle Windows'ta özellikle yararlı olacaktır.
Craig Ringer

Eski 8.1 ve 8.2 günlerinde PostgreSQL'in Windows ve Linux'ta yan yana karşılaştırmalarını yaptım. Yükümüz için Linux yaklaşık% 50 daha hızlıydı. Ancak bunun ne kadarının sadece ağ olduğu belli değil, çünkü müşteriler ayrı bir kutudaydı ve açık bir bağlantıda ham ağ çıkışını test etmek için aynı Java kodunu kullanıyorlardı; pencereler. İlginçtir ki, bir taraf Linux, bir Windows ise iki tarafın% 15 oranında yavaştı.
kgrittn

2

Bunu cevaplaması zor: Ken'in belirttiği gibi, Postgres işletim sistemi arasında herhangi bir fark yaratmıyor ve Windows'ta Linux'ta olduğu gibi sabit / kararsız.

Bu sorunun tek gerçek cevabı şudur: dene.

Bir Linux sunucusu ve aynı özelliklere sahip bir Windows sunucusu kurun, her iki makinede de aynı miktarda veri kullanın ve testlerinizi çalıştırın.

Not: Bunun daha iyi oyları var çünkü serverfault'dan daha iyi sorulabilir


ServerFault'da daha mı iyi? Bunu bir sistem yöneticisi için bir sorundan ziyade geliştiriciler için bir yazılım problemi olarak kategorize ederdim.

1
Bu bir yazılım sorunu değildir, hiçbir geliştirici SQL'i hakkında endişelenecek bir şey yoktur: PostgreSQL, Linux'taki samen SQL'i Windows'ta olduğu gibi kullanır.
Frank Heikens,

2

Benim anladığım kadarıyla, aynı donanım için, Windows'a kıyasla Linux'ta daha iyi performans elde edersiniz. Ayrıca, Postgres pencerelerde çalışırken, çok daha uzun süredir * nix üzerinde çalışmaktadır. Elbette durumunuza bağlı olarak YMMV.

Postgres performansıyla ilgili gerçekten iyi bir referans "PostgreSQL 9.0 High Performance" ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). Başlık, yalnızca 9.0 sürümünden daha fazlasını kapsadığı için bir yanlış adresten biraz görüntüleniyor.


-1

AFAIK Postgres, ayrımcılık yapmaz, Windows'taki özellikleri ya da benzeri bir şeyi sakat tutmaz. Yani Linux gerektiren Postgres hakkında hiçbir şey yok.

Genelde Linux hakkında sormakta daha iyi olabilirsin. Genel sunucu platformu olarak Windows'a karşı.

Görüş: Ama param için bir sunucu her zaman Linux çalıştırır. Görev kritik sunucu yazılımını Windows'a yerleştirmeyi asla hayal etmezdim. Sadece 2 sentim. Görüşün Sonu.


stability and **performance** are crucial
Vladislav Rastrusny

Bir cevapta bu tahminin neden yanlış olduğunu görmek için diğer cevapları okuyun. Lütfen cevabı silmeyi düşünün.
Sam,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.