Czy PostgreSQL jest odpowiedni dla jednego systemu operacyjnego? Czy jest lepszy w systemie Linux niż Windows?

26

Korzystam z PostgreSQL na Windows Server 2003 bez żadnych problemów i jest szybki, więc odpowiedź na moje pytanie wydaje się w porządku.

Jednak mam zamiar uruchomić nowy projekt i rozważam użycie zamiast niego Linuksa, ponieważ stabilność i wydajność są kluczowe. Ponieważ PostgreSQL wydaje się być rozwijany głównie na dystrybucjach Linuksa, może lepiej byłoby trzymać się Linuksa?


źródło
2
wybór platformy jest funkcją sysadmin, nawet jeśli jest wykonywana przez programistę.
araqnid
Powiązane: serverfault.com/questions/99068/…
ChristopheD
Wydaje mi się, że rozszerzenia pg są pakowane dla systemu Linux, zanim będą dla systemu Windows.
Neil McGuigan,

Odpowiedzi:

46

PostgreSQL z pewnością będzie działał szybciej w systemie Linux niż w systemie Windows (i mówię to jako jeden z facetów, którzy napisali jego port dla systemu Windows ..) Jest zaprojektowany dla architektury w stylu uniksowym i implementuje tę samą architekturę w systemie Windows, co oznacza, że robi wiele rzeczy, których system Windows nie jest przeznaczony do robienia dobrze. To działa dobrze, ale to nie działa jak dobrze.

Na przykład PostgreSQL używa modelu proces na połączenie, a nie wątków. System Windows został zaprojektowany do wykonywania wątków. Jeśli aplikacja łączy się i rozłącza, na przykład będzie działała znacznie wolniej w systemie Windows.

Istnieją również pewne założenia dotyczące systemu plików, które nie faworyzują NTFS.

Jedną rzeczą, o której naprawdę musisz pomyśleć - jeśli korzystasz z systemu Windows, większość produktów antywirusowych będzie działać nieprawidłowo, gdy będzie używana z PostgreSQL, ponieważ nie są przyzwyczajeni do tego rodzaju obciążenia (np. 1000 różnych procesów odczytu i zapisu do tego samego pliku przez różne uchwyty). Oznacza to, że zdecydowanie zaleca się, aby zawsze odinstalować program antywirusowy, jeśli to możliwe (samo wyłączenie lub wykluczenie procesów / plików PostgreSQL często nie wystarcza). I to nie tylko ze względu na wydajność, ale także stabilność pod obciążeniem.

Magnus Hagander
źródło
Dzięki! Miło jest mieć autorytatywną odpowiedź, choć w moim przypadku trzymanie się systemu Windows brzmi dobrze: mam bardzo mało połączeń i nie mam antywirusa (też ich nie lubię). Wydajność też była świetna: myślę, że pomaga mi buforowanie systemu Windows i szybkość
Byłoby miło zobaczyć jakieś rzeczywiste wskaźniki wydajności ...
1
BTW, użycie puli połączeń będzie szczególnie pomocne w systemie Windows ze względu na wyższe koszty tworzenia / niszczenia procesów.
Craig Ringer
Dokonałem porównań PostgreSQL w systemie Windows z Linuksem w starych wersjach 8.1 i 8.2. Przy naszym obciążeniu Linux był około 50% szybszy. Nie jest jednak jasne, ile z tego dotyczyło tylko sieci, ponieważ klienci byli na osobnym komputerze i używali tego samego kodu Java do testowania surowej przepustowości sieci na otwartym połączeniu działali 30% szybciej, gdy obie strony były Linuksem, niż gdy obie strony były Windows Co ciekawe, gdy jedna strona była Linuksem, a druga Windowsem, było o 15% wolniejsze niż Linuksa obu stron.
kgrittn
2

Trudno na to odpowiedzieć: jak zauważył Ken, Postgres nie robi żadnych różnic między systemem operacyjnym i jest tak stabilny / niestabilny w systemie Windows, jak w systemie Linux.

Jedyną prawdziwą odpowiedzią na to pytanie jest: spróbuj.

Skonfiguruj serwer Linux i serwer Windows z tymi samymi specyfikacjami, użyj tej samej ilości danych na obu komputerach i uruchom testy.

PS: To ma bliskie głosy, ponieważ można lepiej zapytać o awarię serwera

DrColossos
źródło
Czy to jest lepsze w ServerFault? Sklasyfikowałbym to jako problem oprogramowania dla programistów, a nie problem administratora systemu.
1
To nie jest problem z oprogramowaniem, żaden programista nigdy nie musi się martwić o swój SQL: PostgreSQL używa samen SQL w Linuksie, tak jak w Windows.
Frank Heikens
2

Rozumiem, że dla tego samego sprzętu uzyskasz lepszą wydajność w systemie Linux niż w systemie Windows. Ponadto, chociaż Postgres działa w systemie Windows, działa na * nix od znacznie, dużo dłużej. YMMV oczywiście w zależności od twojej sytuacji.

Naprawdę dobrym odniesieniem do wydajności Postgres jest „PostgreSQL 9.0 High Performance” ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). Tytuł jest trochę mylący, ponieważ obejmuje więcej niż tylko wersję 9.0.

gsiems
źródło
-1

AFAIK Postgres nie dyskryminuje, nie osłabia funkcji systemu Windows ani nic takiego. Więc w Postgres nic nie wymaga Linuksa.

Lepiej zapytaj ogólnie o Linuksa. vs. Windows jako ogólna platforma serwerowa.

OPINIA: Ale za moje pieniądze na serwerze zawsze działa Linux. Nigdy nie marzyłbym o umieszczeniu oprogramowania serwerowego o kluczowym znaczeniu dla systemu Windows. Tylko moje 2 centy. Koniec opinii.


źródło
stability and **performance** are crucial
Vladislav Rastrusny
Przeczytaj pozostałe odpowiedzi, aby zobaczyć, dlaczego to przypuszczenie przy odpowiedzi jest nieprawidłowe. Proszę rozważyć usunięcie odpowiedzi.
Sam