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


J'exécutais PostgreSQL sur Windows Server 2003 sans accroc ni rapidité, alors pour répondre à ma propre question, cela semble aller.

Cependant, je suis sur le point de lancer un nouveau projet et envisage d'utiliser plutôt une machine Linux, car la stabilité et les performances sont essentielles. Puisque PostgreSQL semble être principalement développé sur des distributions Linux, peut-être vaudrait-il mieux rester avec Linux?


25
2018-01-14 02:59


origine


le choix d'une plate-forme est une fonction sysadmin, même si elle est effectuée par un développeur. - araqnid
En relation: serverfault.com/questions/99068/… - ChristopheD
Il me semble que les extensions pg sont empaquetées pour Linux avant de l'être pour Windows. - Neil McGuigan


Réponses:


PostgreSQL va certainement tourner plus vite sous Linux que sous Windows (et je le dis en tant que mec qui a écrit le portage de Windows ..). Il est conçu pour une architecture de style Unix et implémente cette même architecture sous Windows, ce qui signifie fait un certain nombre de choses que Windows n'est pas conçu pour bien faire. Il travaux bien, mais ça ne fonctionne pas aussi bien.

Par exemple, PostgreSQL utilise un modèle de processus par connexion, pas de thread. Windows est conçu pour faire du threading. Si votre application effectue beaucoup de connexions et de déconnexions, 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 à laquelle vous devez vraiment penser - si vous êtes sur Windows, la plupart des produits antivirus volonté bug out lorsqu'il est utilisé avec PostgreSQL, car ils ne sont pas habitués à ce type de charge de travail (par exemple, 1 000 processus différents lisant et écrivant dans le même fichier via des descripteurs différents). Cela signifie que la recommandation est fortement de toujours désinstaller tout antivirus si possible (le simple fait de le désactiver ou d'exclure les processus / fichiers PostgreSQL n'est souvent pas suffisant). Et ce n’est pas seulement pour des raisons de performances, mais aussi pour la stabilité sous charge.


42
2018-01-14 14:24



Merci! C'est bien d'avoir une réponse autoritaire, bien que dans mon cas, coller à Windows sonne bien: j'ai très peu de connexions et pas d'anti-virus (je ne les aime pas aussi). Les performances ont également été excellentes: je pense que la mise en cache de Windows et la vitesse d'E / S (lorsque vous avez des pilotes à jour) m'aident là-bas.
Ce serait bien de voir des points de repère de débit dans le monde réel ...
En passant, l’utilisation d’un pool de connexions sera particulièrement utile sous Windows en raison des coûts de création / destruction des processus plus élevés. - Craig Ringer
J'ai comparé côte à côte PostgreSQL sous Windows et Linux au cours des anciens jours 8.1 et 8.2. Pour notre charge, Linux était environ 50% plus rapide. Cependant, il n’est pas clair qu’il s’agisse d’une simple mise en réseau, car les clients se trouvaient sur une boîte séparée et utilisaient le même code Java pour tester le débit brut du réseau sur une connexion ouverte. La vitesse de connexion était de 30% supérieure lorsque les deux côtés étaient Linux. Les fenêtres. Fait intéressant, lorsqu'un côté était Linux et un autre était Windows, il était 15% plus lent que les deux côtés Linux. - kgrittn


Il est difficile de répondre à cette question: comme Ken l'a fait remarquer, 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-le.

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 ordinateurs et exécutez vos tests.

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


2
2018-01-14 09:46



Est-ce mieux sur ServerFault? Je l'aurais classé comme un problème logiciel pour les développeurs plutôt que comme un problème pour un administrateur système.
Ce n'est pas un problème logiciel, aucun développeur n'a à s'inquiéter de son code SQL: PostgreSQL utilise le même code SQL sous Linux que sous Windows. - Frank Heikens


D'après ce que je comprends, pour le même matériel, vous obtiendrez de meilleures performances sous Linux par opposition à Windows. De plus, bien que Postgres fonctionne sous Windows, il fonctionne sur * nix depuis beaucoup, beaucoup plus longtemps. YMMV bien sûr en fonction de votre situation.

"PostgreSQL 9.0 High Performance" est une excellente référence sur les performances de Postgres.https://www.packtpub.com/postgresql-9-0-high-performance/book). Le titre est un peu trompeur, car il ne se limite pas à la version 9.0.


2
2018-01-14 14:02





Autant que je sache, Postgres ne discrimine pas, ils ne paralysent pas les fonctionnalités de Windows, ni rien de ce genre. Donc, rien sur Postgres ne nécessite Linux.

Vous feriez peut-être mieux de poser des questions sur Linux. vs Windows en tant que plate-forme de serveur générale.

OPINION: 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'opinion.


-1
2018-01-14 03:07



stability and **performance** are crucial - Vladislav Rastrusny
Lisez les autres réponses pour voir pourquoi cette hypothèse de réponse est incorrecte. S'il vous plaît envisager de supprimer la réponse. - Sam