PostgreSQL是否适合一种操作系统?在Linux上比Windows更好吗?


26

我一直在Windows Server 2003上顺利运行PostgreSQL,而且运行起来很快,因此回答我自己的问题似乎还不错。

但是,我将要启动一个新项目,并考虑使用Linux机器,因为稳定性和性能至关重要。由于PostgreSQL似乎主要是在Linux发行版上开发的,也许坚持使用Linux会更好?


2
选择平台是sysadmin功能,即使它是由开发人员执行的也是如此。
araqnid


在我看来,pg扩展名在Windows之前就已经为Linux打包了。
尼尔·麦圭根

Answers:


45

PostgreSQL在Linux上运行肯定比在Windows上运行快(我以编写Windows端口的人之一来表示。)它是为Unix风格的体系结构设计的,并且在Windows上实现了相同的体系结构,这意味着它做了很多Windows不能很好完成的事情。它工作正常,但效果不佳。

例如,PostgreSQL使用每个连接的进程模型,而不是线程模型。Windows设计用于执行线程。例如,如果您的应用程序进行了大量的连接和断开操作,则它在Windows上的运行肯定会明显慢一些。

关于文件系统,还有一些假设并不完全支持NTFS。

有一件事你真的需要考虑一下-如果你是在Windows上,大多数防病毒产品错误PostgreSQL的使用时,因为他们不习惯这种类型的工作负载进行(如1000个不同的进程读取和写入同一文件通过不同的句柄)。这意味着强烈建议始终尽可能卸载所有防病毒软件(仅禁用它或排除PostgreSQL进程/文件通常是不够的)。这不仅是出于性能原因,而且还在于负载下的稳定性。


谢谢!很高兴有一个权威的答案,尽管就我而言,坚持使用Windows听起来不错:我的连接很少,也没有防病毒软件(我也不喜欢它们)。性能一直是太伟大:我认为的Windows缓存和IO速度(当你有最新的驱动程序)帮助我有..

很高兴看到一些实际的吞吐量基准...

1
顺便说一句,由于更大的过程创建/销毁成本,使用连接池在Windows上特别有用。
Craig Ringer 2012年

我确实在旧的8.1和8.2天对Windows和Linux上的PostgreSQL进行了并排比较。对于我们的负载,Linux的速度提高了约50%。但是,尚不清楚其中有多少只是网络,因为客户端在单独的盒子上,并且使用相同的Java代码来测试开放连接上的原始网络吞吐量,当双方都是Linux时,运行速度比双方都是30%。视窗。有趣的是,当一侧是Linux而一侧是Windows时,它比两侧的Linux慢15%。
kgrittn

2

这很难回答:正如Ken所指出的,Postgres在操作系统之间没有任何区别,它在Windows中像在Linux上一样稳定/不稳定。

这个问题的唯一真实答案是:尝试一下。

设置具有相同规格的Linux服务器和Windows服务器,在两台计算机上使用相同数量的数据并运行测试。

PS:这票得票数很高,因为最好在serverfault上询问


在ServerFault上更好吗?我会将其归类为开发人员的软件问题,而不是系统管理员的问题。

1
这不是软件问题,没有开发人员会担心他的SQL:PostgreSQL在Linux上使用与Windows上相同的SQL。
Frank Heikens 2011年

2

据我了解,对于相同的硬件,与Windows相比,您将在Linux上获得更好的性能。而且,虽然Postgres确实可以在Windows上运行,但它已经在* nix上运行了很多得多的时间。YMMV当然取决于您的情况。

关于Postgres性能的一个很好的参考是“ PostgreSQL 9.0 High Performance”(https://www.packtpub.com/postgresql-9-0-high-performance/book)。标题有点用词不当,因为它涵盖的范围不仅仅限于9.0版。


-1

AFAIK Postgres不会歧视,它们不会削弱Windows或类似功能。因此,Postgres并不需要Linux。

一般而言,最好询问Linux。与Windows作为通用服务器平台相比。

意见:但以我的钱,一台服务器始终运行Linux。永远梦想将关键任务服务器软件放在Windows上。只是我的2美分。意见终结。


stability and **performance** are crucial
Vladislav Rastrusny 2014年

阅读其他答案,以了解为什么这个答案是错误的。请考虑删除答案。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.