Ist PostgreSQL für ein Betriebssystem geeignet? Ist es unter Linux besser als unter Windows?

26

Ich habe PostgreSQL unter Windows Server 2003 problemlos und schnell ausgeführt, daher scheint es in Ordnung zu sein, meine eigene Frage zu beantworten.

Ich bin jedoch im Begriff, ein neues Projekt zu starten und erwäge, stattdessen eine Linux-Box zu verwenden, da Stabilität und Leistung von entscheidender Bedeutung sind. Da PostgreSQL anscheinend hauptsächlich für Linux-Distributionen entwickelt wurde, ist es vielleicht besser, sich an Linux zu halten.


quelle
2
Das Auswählen einer Plattform ist eine Sysadmin-Funktion, auch wenn sie von einem Entwickler ausgeführt wird.
Araknid
Siehe auch
ChristopheD
Mir scheint, dass pg-Erweiterungen für Linux gepackt werden, bevor sie für Windows sind.
Neil McGuigan

Antworten:

45

PostgreSQL wird unter Linux definitiv schneller laufen als unter Windows (und ich sage dies als einer der Typen, die den Windows-Port dafür geschrieben haben). Es ist für eine Architektur im Unix-Stil konzipiert und implementiert dieselbe Architektur unter Windows, was bedeutet, dasselbe führt eine Reihe von Aufgaben aus, für die Windows nicht geeignet ist. Es funktioniert gut, aber es funktioniert nicht so gut.

PostgreSQL verwendet beispielsweise ein Prozess-pro-Verbindung-Modell, kein Threading. Windows wurde für das Threading entwickelt. Wenn Ihre Anwendung viele Verbindungen herstellt und trennt, wird sie beispielsweise unter Windows auf jeden Fall erheblich langsamer ausgeführt.

Es gibt auch einige Annahmen rund um das Dateisystem, die NTFS nicht gerade begünstigen.

Das einzige , was Sie wirklich darüber nachdenken müssen - wenn Sie unter Windows, die meisten Antivirus - Produkte werden Fehler aus , wenn sie mit PostgreSQL verwendet, da sie nicht auf diese Art der Arbeitsbelastung (wie 1000 verschiedene Verfahren verwendet werden , das Lesen und Schreiben auf die gleiche Datei durch verschiedene Griffe). Das bedeutet, dass die starke Empfehlung lautet, Antivirenprogramme nach Möglichkeit immer zu deinstallieren (das Deaktivieren oder Ausschließen der PostgreSQL-Prozesse / -Dateien reicht oft nicht aus). Und das nicht nur aus Performancegründen, sondern auch aus Stabilitätsgründen unter Last.

Magnus Hagander
quelle
Vielen Dank! Es ist schön, eine verbindliche Antwort zu haben, aber in meinem Fall hört sich das Festhalten an Windows gut an: Ich habe nur sehr wenige Verbindungen und kein Antivirus (ich mag sie auch nicht). Die Leistung war auch großartig: Ich denke, Windows-Caching und E / A-Geschwindigkeit (wenn Sie aktuelle Treiber haben) helfen mir dabei.
Es wäre schön, einige echte Durchsatz-Benchmarks zu sehen ...
1
Übrigens ist die Verwendung eines Verbindungspools unter Windows aufgrund der höheren Kosten für die Erstellung / Zerstörung von Prozessen besonders hilfreich.
Craig Ringer
In den alten 8.1 und 8.2 Tagen habe ich PostgreSQL nebeneinander unter Windows und Linux verglichen. Für unsere Last war Linux ungefähr 50% schneller. Es ist jedoch nicht klar, wie viel davon nur das Netzwerk war, da Clients auf einer separaten Box waren und denselben Java-Code verwendeten, um den unformatierten Netzwerkdurchsatz auf einer offenen Verbindung zu testen, der 30% schneller lief, wenn beide Seiten Linux waren, als wenn beide Seiten Linux waren Windows. Interessanterweise war eine Seite Linux und eine Windows-Seite 15% langsamer als beide Seiten Linux.
kgrittn
2

Dies ist schwer zu beantworten: Wie Ken bemerkte, macht Postgres keinen Unterschied zwischen dem Betriebssystem und es ist unter Windows so stabil / instabil wie unter Linux.

Die einzig richtige Antwort auf diese Frage lautet: Probieren Sie es aus.

Richten Sie einen Linux-Server und einen Windows-Server mit denselben Spezifikationen ein, verwenden Sie dieselbe Datenmenge auf beiden Computern und führen Sie Ihre Tests aus.

PS: Dies hat enge Abstimmungen, weil es möglicherweise besser bei Serverfehler gefragt wird

DrColossos
quelle
Ist es bei ServerFault besser? Ich hätte es eher als Softwareproblem für Entwickler als als Problem für einen Systemadministrator eingestuft.
1
Dies ist kein Softwareproblem, und kein Entwickler muss sich jemals Sorgen um sein SQL machen: PostgreSQL verwendet unter Linux dasselbe SQL wie unter Windows.
Frank Heikens
2

Meines Erachtens erhalten Sie unter Linux bei gleicher Hardware eine bessere Leistung als unter Windows. Auch wenn Postgres unter Windows läuft, läuft es viel, viel länger unter * nix. YMMV natürlich abhängig von Ihrer Situation.

Eine wirklich gute Referenz zur Leistung von Postgres ist "PostgreSQL 9.0 High Performance" ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). Der Titel ist ein bisschen irreführend, da er mehr als nur Version 9.0 abdeckt.

gsiems
quelle
-1

AFAIK Postgres unterscheidet nicht, sie lähmen keine Funktionen unter Windows oder ähnliches. Es gibt also nichts an Postgres, was Linux erfordert.

Möglicherweise ist es besser, allgemein nach Linux zu fragen. Windows als allgemeine Serverplattform.

MEINUNG: Aber für mein Geld läuft auf einem Server immer Linux. Ich würde nie davon träumen, geschäftskritische Serversoftware unter Windows zu installieren. Nur meine 2 Cent. Ende der Stellungnahme.


quelle
stability and **performance** are crucial
Vladislav Rastrusny
Lesen Sie die anderen Antworten, um herauszufinden, warum diese Vermutung falsch ist. Bitte denken Sie daran, die Antwort zu löschen.
Sam