O PostgreSQL é adequado para um sistema operacional? É melhor no Linux que no Windows?

26

Estou executando o PostgreSQL no Windows Server 2003 sem problemas e é rápido, então, para responder à minha própria pergunta, parece bom.

No entanto, estou prestes a lançar um novo projeto e estou pensando em usar uma caixa Linux, pois a estabilidade e o desempenho são cruciais. Como o PostgreSQL parece ser desenvolvido principalmente nas distribuições Linux, talvez seja melhor ficar com o Linux?


fonte
2
escolher uma plataforma é uma função sysadmin, mesmo que seja executada por um desenvolvedor.
Araqnid
Relacionados: serverfault.com/questions/99068/...
ChristopheD
Parece-me que as extensões pg são empacotadas para linux antes de serem para windows.
Neil McGuigan

Respostas:

46

O PostgreSQL definitivamente funcionará mais rápido no Linux do que no Windows (e eu digo isso como um dos caras que escreveu a porta do Windows ..) Ele foi projetado para uma arquitetura de estilo Unix e implementa essa mesma arquitetura no Windows, o que significa que faz várias coisas que o Windows não foi projetado para fazer bem. Ele funciona bem, mas não funcionar tão bem.

Por exemplo, o PostgreSQL usa um modelo de processo por conexão, e não o threading. O Windows foi projetado para realizar threads. Se o seu aplicativo conectar e desconectar bastante, ele definitivamente será executado significativamente mais lento no Windows, por exemplo.

Também existem algumas suposições no sistema de arquivos que não favorecem exatamente o NTFS.

A única coisa em que você realmente precisa pensar - se você estiver no Windows, a maioria dos produtos antivírus ocorrerá quando usados ​​com o PostgreSQL, porque não estão acostumados a esse tipo de carga de trabalho (como 1000 processos diferentes de leitura e gravação no mesmo arquivo) através de alças diferentes). Isso significa que a forte recomendação é sempre desinstalar qualquer antivírus, se possível (apenas desativá-lo ou excluir os processos / arquivos do PostgreSQL geralmente não é suficiente). E isso não é apenas por razões de desempenho, mas também estabilidade sob carga.

Magnus Hagander
fonte
Obrigado! É bom ter uma resposta autorizada, embora, no meu caso, aderir ao Windows pareça bom: tenho muito poucas conexões e não antivírus (também não gosto delas). Desempenho tem sido muito grande: Eu acho que o Windows cache e velocidade IO (quando você tem até data drivers) me ajuda lá ..
Seria bom para ver algumas mundo real rendimento benchmarks ...
1
BTW, o uso de um pool de conexões será particularmente útil no Windows devido aos maiores custos de criação / destruição de processos.
Craig Ringer
Fiz comparações lado a lado do PostgreSQL no Windows e Linux nos antigos 8.1 e 8.2 dias. Para nossa carga, o Linux foi cerca de 50% mais rápido. Não está claro quanto disso foi apenas a rede, porque os clientes estavam em uma caixa separada e usando o mesmo código Java para testar a taxa de transferência bruta da rede em uma conexão aberta, rodaram 30% mais rápido quando os dois lados eram Linux do que quando ambos os lados estavam. Janelas. Curiosamente, quando um lado era o Linux e o outro era o Windows, era 15% mais lento que o Linux.
kgrittn
2

É difícil responder: como Ken observou, o Postgres não faz nenhuma diferença entre o sistema operacional e é tão estável / instável no Windows quanto no Linux.

A única resposta real para essa pergunta é: tente.

Configure um servidor Linux e um servidor Windows com as mesmas especificações, use a mesma quantidade de dados em ambas as máquinas e execute seus testes.

PS: Isso tem votos apertados, porque pode ser melhor perguntar em serverfault

DrColossos
fonte
É melhor no ServerFault? Eu o teria classificado como um problema de software para desenvolvedores, e não como um problema para um administrador de sistemas.
1
Isso não é um problema de software, nenhum desenvolvedor precisa se preocupar com o SQL: o PostgreSQL usa o mesmo SQL no Linux, como no Windows.
precisa saber é o seguinte
2

Entendo que, para o mesmo hardware, você obterá melhor desempenho no Linux, em oposição ao Windows. Além disso, embora o Postgres seja executado no Windows, ele está sendo executado no * nix por muito, muito mais tempo. YMMV, é claro, dependendo da sua situação.

Uma referência realmente boa sobre o desempenho do Postgres é "PostgreSQL 9.0 High Performance" ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). O título é um pouco impróprio, pois abrange mais do que apenas a versão 9.0.

gsiems
fonte
-1

O AFAIK Postgres não discrimina, eles não prejudicam os recursos do Windows ou algo assim. Portanto, não há nada no Postgres que exija Linux.

Você pode estar melhor perguntando geralmente sobre o Linux. vs. Windows como uma plataforma geral de servidor.

PARECER: Mas, para o meu dinheiro, um servidor sempre executa o Linux. Nunca sonharia em colocar software de servidor de missão crítica no Windows. Apenas meus 2 centavos. Fim de Opinião.


fonte
stability and **performance** are crucial
Vladislav Rastrusny
Leia as outras respostas para ver por que esse palpite está incorreto. Por favor, considere excluir a resposta.
18715 Sam Sam