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


Ich habe PostgreSQL unter Windows Server 2003 ohne Probleme ausgeführt und es ist schnell, so dass meine eigene Frage gut zu beantworten scheint.

Ich bin gerade dabei ein neues Projekt zu starten und erwäge stattdessen eine Linux Box zu verwenden, da Stabilität und Leistung entscheidend sind. Da PostgreSQL hauptsächlich auf Linux-Distributionen entwickelt wird, wäre es vielleicht besser, bei Linux zu bleiben?


25
2018-01-14 02:59


Ursprung


Das Auswählen einer Plattform ist eine Sysadmin-Funktion, selbst wenn sie von einem Entwickler ausgeführt wird. - araqnid
Verbunden: serverfault.com/questions/99068/... - ChristopheD
Scheint mir wie pg Erweiterungen sind für Linux verpackt, bevor sie für Windows sind. - Neil McGuigan


Antworten:


PostgreSQL wird unter Linux definitiv schneller laufen als unter Windows (und ich sage das als einer der Typen, die den Windows-Port davon geschrieben haben ...). Es ist für eine Unix-Architektur entworfen und implementiert diese Architektur unter Windows, was es bedeutet eine Reihe von Dingen, für die Windows nicht gut geeignet ist. Es funktioniert gut, aber es funktioniert nicht so gut.

Zum Beispiel verwendet PostgreSQL ein Prozess-pro-Verbindung-Modell, nicht Threading. Windows ist so konzipiert, Threading durchzuführen. Wenn Ihre Anwendung viele Verbindungen herstellt und trennt, wird sie unter Windows beispielsweise deutlich langsamer ausgeführt.

Es gibt auch einige Annahmen über das Dateisystem, die NTFS nicht gerade bevorzugen.

Die eine Sache, an die Sie wirklich denken müssen - wenn Sie unter Windows sind, die meisten Antivirus-Produkte werden Fehler bei der Verwendung mit PostgreSQL, da sie nicht an diese Art von Workload gewöhnt sind (z. B. 1000 verschiedene Prozesse, die über verschiedene Handles in dieselbe Datei lesen und schreiben). Das bedeutet, dass die starke Empfehlung ist, jedes Antivirenprogramm nach Möglichkeit zu deinstallieren (es ist oft nicht ausreichend, es zu deaktivieren oder die PostgreSQL-Prozesse / -Dateien auszuschließen). Und das nicht nur aus Leistungsgründen, sondern auch unter Last.


42
2018-01-14 14:24



Vielen Dank! Schön, eine autorisierende Antwort zu haben, obwohl in meinem Fall das Anhalten an Windows gut klingt: Ich habe sehr wenige Verbindungen und keinen Anti-Virus (ich mag sie auch nicht). Die Leistung war auch sehr gut: Ich denke Windows Caching und IO-Geschwindigkeit (wenn Sie aktuelle Treiber haben) hilft mir dort.
Es wäre schön, einige Benchmark-Benchmarks für die reale Welt zu sehen ...
Übrigens wird die Verwendung eines Verbindungspools aufgrund der höheren Kosten für die Erstellung und Löschung von Prozessen besonders hilfreich für Windows sein. - Craig Ringer
Ich habe PostgreSQL-Vergleiche unter Windows und Linux in den alten Tagen 8.1 und 8.2 durchgeführt. Für unsere Last war Linux um 50% schneller. Es ist jedoch nicht klar, wie viel davon nur die Vernetzung war, da die Clients in einer separaten Box waren und denselben Java-Code verwendeten, um den rohen Netzwerkdurchsatz bei einer offenen Verbindung zu testen, der um 30% schneller war, wenn beide Seiten Linux waren Windows. Interessanterweise war eine Seite Linux und eine Windows war 15% langsamer als beide Seiten Linux. - kgrittn


Das ist schwer zu beantworten: Wie Ken bemerkte, macht Postgres keine Unterschiede zwischen dem Betriebssystem und es ist so stabil / instabil in Windows wie auf Linux.

Die einzige wirkliche Antwort auf diese Frage ist: Probieren Sie es aus.

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

PS: Dies hat enge Stimmen, weil es besser bei Serverfault gefragt werden kann


2
2018-01-14 09:46



Ist es besser auf ServerFault? Ich hätte es als Softwareproblem für Entwickler und nicht als Problem für einen Systemadministrator eingestuft.
Dies ist kein Softwareproblem, kein Entwickler muss sich jemals um sein SQL kümmern: PostgreSQL verwendet das gleiche SQL unter Linux wie unter Windows. - Frank Heikens


Ich gehe davon aus, dass Sie bei gleicher Hardware unter Linux eine bessere Leistung erzielen als unter Windows. Während Postgres unter Windows läuft, läuft es auf * nix viel länger. YMMV natürlich abhängig von Ihrer Situation.

Eine wirklich gute Referenz auf Postgres Performance 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.


2
2018-01-14 14:02





AFAIK Postgres diskriminiert nicht, sie lähmt Funktionen unter Windows nicht, oder so ähnlich. Es gibt also nichts über Postgres, das Linux benötigt.

Sie könnten besser nach Linux fragen. vs. Windows als allgemeine Serverplattform.

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


-1
2018-01-14 03:07



stability and **performance** are crucial - Vladislav Rastrusny
Lesen Sie die anderen Antworten, um zu sehen, warum diese Vermutung bei einer Antwort falsch ist. Bitte überlegen Sie, die Antwort zu löschen. - Sam