PostgreSQL est-il adapté à un système d'exploitation? Est-ce mieux sous Linux que Windows?

26

J'ai exécuté PostgreSQL sur Windows Server 2003 sans accroc et rapide, donc pour répondre à ma propre question, cela semble correct.

Cependant, je suis sur le point de lancer un nouveau projet et j'envisage d'utiliser une boîte Linux à la place car la stabilité et les performances sont cruciales. Étant donné que PostgreSQL semble être principalement développé sur des distributions Linux, il serait peut-être préférable de s'en tenir à Linux?


la source
2
le choix d'une plate-forme est une fonction sysadmin, même si elle est effectuée par un développeur.
araqnid
Il me semble que les extensions pg sont packagées pour linux avant d'être pour windows.
Neil McGuigan

Réponses:

46

PostgreSQL fonctionnera certainement plus rapidement sur Linux que sur Windows (et je dis cela comme l'un des gars qui en a écrit le portage Windows ..) Il est conçu pour une architecture de style Unix, et implémente cette même architecture sur Windows, ce qui signifie qu'il fait un certain nombre de choses que Windows n'est pas conçu pour bien faire. Cela fonctionne bien, mais il ne fonctionne pas aussi bien.

Par exemple, PostgreSQL utilise un modèle de processus par connexion, pas de threading. Windows est conçu pour faire du filetage. Si votre application se connecte et se déconnecte beaucoup, elle s'exécutera certainement beaucoup plus lentement sous Windows, par exemple.

Il existe également des hypothèses sur le système de fichiers qui ne favorisent pas exactement NTFS.

La seule chose que vous avez vraiment besoin de penser à - si vous êtes sous Windows, la plupart des produits antivirus sera bogue lorsque utilisé avec PostgreSQL, car ils ne sont pas habitués à ce type de charge de travail ( par exemple 1000 différents processus de lecture et d' écriture au même fichier à travers différentes poignées). Cela signifie que la recommandation forte est de toujours désinstaller tout antivirus si possible (le désactiver simplement ou exclure les processus / fichiers PostgreSQL n'est souvent pas suffisant). Et ce n'est pas seulement pour des raisons de performances, mais aussi de stabilité sous charge.

Magnus Hagander
la source
Merci! C'est bien d'avoir une réponse autoritaire, mais dans mon cas, s'en tenir à Windows sonne bien: j'ai très peu de connexions et pas d'antivirus (je ne les aime pas trop). Les performances ont également été excellentes: je pense que la mise en cache Windows et la vitesse d'E / S (lorsque vous avez des pilotes à jour) m'aide là-bas.
Ce serait bien de voir des références de débit dans le monde réel ...
1
BTW, l'utilisation d'un pool de connexions sera particulièrement utile sous Windows en raison des coûts de création / destruction de processus plus importants.
Craig Ringer
J'ai fait des comparaisons côte à côte de PostgreSQL sur Windows par rapport à Linux dans les anciens 8.1 et 8.2 jours. Pour notre charge, Linux était environ 50% plus rapide. Cependant, il n'est pas clair combien de cela était juste la mise en réseau, car les clients étaient sur une boîte séparée et en utilisant le même code Java pour tester le débit réseau brut sur une connexion ouverte, ils étaient 30% plus rapides lorsque les deux côtés étaient Linux que lorsque les deux côtés étaient Les fenêtres. Fait intéressant, lorsqu'un côté était Linux et l'autre Windows, il était 15% plus lent que les deux côtés Linux.
kgrittn
2

C'est difficile à répondre: comme l'a noté Ken, Postgres ne fait aucune différence entre le système d'exploitation et il est aussi stable / instable sous Windows que sous Linux.

La seule vraie réponse à cette question est: essayez-la.

Configurez un serveur Linux et un serveur Windows avec les mêmes spécifications, utilisez la même quantité de données sur les deux machines et exécutez vos tests.

PS: Cela a des votes serrés car il vaut peut-être mieux le demander à serverfault

DrColossos
la source
Est-ce mieux sur ServerFault? Je l'aurais catégorisé comme un problème logiciel pour les développeurs plutôt que comme un problème pour un administrateur système.
1
Ce n'est pas un problème logiciel, aucun développeur n'a à se soucier de son SQL: PostgreSQL utilise le samen SQL sous Linux comme il le fait sous Windows.
Frank Heikens
2

Je crois comprendre que, pour le même matériel, vous obtiendrez de meilleures performances sur Linux par opposition à Windows. De plus, bien que Postgres fonctionne sur Windows, il fonctionne sur * nix depuis beaucoup, beaucoup plus longtemps. YMMV bien sûr en fonction de votre situation.

Une très bonne référence sur les performances de Postgres est "PostgreSQL 9.0 High Performance" ( https://www.packtpub.com/postgresql-9-0-high-performance/book ). Le titre est un peu inapproprié car il couvre plus que la version 9.0.

gsiems
la source
-1

AFAIK Postgres ne fait pas de discrimination, ils ne paralysent pas les fonctionnalités de Windows, ou quelque chose comme ça. Il n'y a donc rien sur Postgres qui nécessite Linux.

Vous feriez mieux de poser des questions générales sur Linux. contre Windows en tant que plate-forme de serveur générale.

AVIS: Mais pour mon argent, un serveur tourne toujours sous Linux. Je ne rêverais jamais de mettre un logiciel serveur critique sur Windows. Juste mes 2 cents. Fin de l'avis.


la source
stability and **performance** are crucial
Vladislav Rastrusny
Lisez les autres réponses pour voir pourquoi cette supposition à une réponse est incorrecte. Veuillez envisager de supprimer la réponse.
Sam