PostgreSQL è adatto a un sistema operativo? È meglio su Linux che su Windows?


26

Ho eseguito PostgreSQL su Windows Server 2003 senza intoppi ed è veloce, quindi per rispondere alla mia domanda sembra che vada bene.

Tuttavia sto per lanciare un nuovo progetto e sto prendendo in considerazione l'utilizzo di un box Linux, poiché stabilità e prestazioni sono cruciali. Poiché PostgreSQL sembra essere sviluppato principalmente su distribuzioni Linux, forse sarebbe meglio attenersi a Linux?


2
la scelta di una piattaforma è una funzione sysadmin, anche se viene eseguita da uno sviluppatore.
araqnid,


Mi sembra che le estensioni di pg siano pacchettizzate per Linux prima che lo siano per Windows.
Neil McGuigan,

Risposte:


46

PostgreSQL funzionerà sicuramente più velocemente su Linux che su Windows (e lo dico come uno dei ragazzi che ne hanno scritto la porta Windows ..) È progettato per un'architettura in stile Unix e implementa questa stessa architettura su Windows, il che significa che fa una serie di cose che Windows non è progettato per fare bene. E funziona bene, ma non esegue pure.

Ad esempio, PostgreSQL utilizza un modello di processo per connessione, non il threading. Windows è progettato per eseguire il threading. Se l'applicazione esegue molte connessioni e disconnessioni, funzionerà sicuramente molto più lentamente su Windows, ad esempio.

Ci sono anche alcuni presupposti nel filesystem che non favoriscono esattamente NTFS.

L'unica cosa a cui devi davvero pensare: se sei su Windows, la maggior parte dei prodotti antivirus si rompono quando vengono utilizzati con PostgreSQL, perché non sono utilizzati per questo tipo di carico di lavoro (come 1000 diversi processi di lettura e scrittura nello stesso file attraverso diverse maniglie). Ciò significa che la forte raccomandazione è di disinstallare sempre qualsiasi antivirus, se possibile (semplicemente disabilitarlo o escludere i processi / file PostgreSQL spesso non è sufficiente). E questo non è solo per motivi di prestazioni, ma anche stabilità sotto carico.


Grazie! Bello avere una risposta autorevole, anche se nel mio caso attenersi a Windows suona bene: ho pochissime connessioni e nessun antivirus (anche a me non piacciono). Anche le prestazioni sono state eccezionali: penso che la memorizzazione nella cache di Windows e la velocità di I / O (quando si dispone di driver aggiornati) mi aiutano lì.

Sarebbe bello vedere alcuni benchmark di throughput nel mondo reale ...

1
A proposito, l'uso di un pool di connessioni sarà particolarmente utile su Windows a causa dei maggiori costi di creazione / distruzione del processo.
Craig Ringer,

Ho fatto confronti diretti di PostgreSQL su Windows rispetto a Linux nei vecchi giorni 8.1 e 8.2. Per il nostro carico Linux è stato di circa il 50% più veloce. Non è chiaro quanto di ciò fosse solo il networking, perché i client erano su una scatola separata e usando lo stesso codice Java per testare il throughput della rete grezza su una connessione aperta correva il 30% più veloce quando entrambe le parti erano Linux rispetto a quando entrambe le parti lo erano Finestre. È interessante notare che quando un lato era Linux e uno era Windows era del 15% più lento di entrambi i lati Linux.
kgrittn,

2

È difficile rispondere: come ha notato Ken, Postgres non fa alcuna differenza tra il sistema operativo ed è stabile / instabile in Windows come lo è su Linux.

L'unica vera risposta a questa domanda è: provala.

Configurare un server Linux e un server Windows con le stesse specifiche, utilizzare la stessa quantità di dati su entrambi i computer ed eseguire i test.

PS: questo ha voti stretti perché potrebbe essere meglio chiedere a serverfault


È meglio su ServerFault? Lo avrei classificato come un problema software per gli sviluppatori piuttosto che un problema per un amministratore di sistema.

1
Questo non è un problema software, nessuno sviluppatore deve mai preoccuparsi del suo SQL: PostgreSQL usa il samen SQL su Linux come su Windows.
Frank Heikens,

2

Comprendo che, per lo stesso hardware, otterrai prestazioni migliori su Linux rispetto a Windows. Inoltre, mentre Postgres funziona su Windows, è stato in esecuzione su * nix per molto, molto più a lungo. YMMV ovviamente a seconda della situazione.

Un ottimo riferimento alle prestazioni di Postgres è "PostgreSQL 9.0 High Performance" ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). Il titolo è un po 'improprio in quanto copre più della semplice versione 9.0.


-1

AFAIK Postgres non discrimina, non paralizza le funzionalità su Windows o cose del genere. Quindi non c'è nulla su Postgres che richiede Linux.

Potrebbe essere meglio chiedere in generale di Linux. vs. Windows come piattaforma server generale.

PARERE: Ma per i miei soldi un server esegue sempre Linux. Non mi sognerei mai di installare software server mission-critical su Windows. Solo i miei 2 centesimi. Fine dell'opinione.


stability and **performance** are crucial
Vladislav Rastrusny,

Leggi le altre risposte per capire perché questa ipotesi su una risposta non è corretta. Si prega di considerare di eliminare la risposta.
Sam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.