PostgreSQL 在 Windows 和 Linux 上的表现一样好吗

PostgreSQL 在 Windows 和 Linux 上的表现一样好吗

这个话题在 2011 年被提出,当时大家一致认为,设计上的考虑因素会让 PostgreSQL 在 Linux 上占据优势。现在已经是 2015 年了,情况有变化吗?如果有什么因素导致 PostgreSQL 在 Windows 上的速度变慢,有人能总结一下这些因素吗?

答案1

如果考虑到我在此回答中列出的要点,我会说 PostgreSQL 在 Windows 上的表现仍然相当不错。但与 2011 年相比,我没有看到任何重大差异。

根据我的经验主要是确保没有 Windows 进程干扰书中的这句话PostgreSQL 9.0 高性能(2010)仍然基本成立:

不可预测的性能和 Windows

严肃的数据库管理员过去一直倾向于使用类 UNIX 系统作为服务器。这里的第一个示例使用的是 Windows,因为生成的图表更易于阅读,因此更适合介绍本节的概念。但这样做让我想起了为什么 Windows 不是这么多人的首选数据库托管操作系统。

要获得有用的基准测试结果,系统必须处于静止状态:没有运行其他程序,因为这些程序会破坏要测量的结果。当启动 Windows Vista 以生成这些结果时,我发现 TrustedInstaller 进程占用了大量 CPU 和磁盘资源。原来是 Windows Update 决定是时候安装下一个主要的 Vista Service Pack 了;它在后台下载一些程序,并抓住一切机会催促我升级。两个小时后,我才完成了它强迫我处理的所有后台活动,并拥有一个能够运行这些测试的空闲系统。

您可能认为,使用 Windows 2012 的 Server Core 版本可能会稍微缓解这个问题。MSDN 文章服务器核心为何有用?(关于 Windows 2008) 但是说:

在我们了解 Server Core 的优势之前,让我们先澄清一个误解:提高性能并不是运行 Server Core 而不是完整安装 Windows Server 2008 的优势之一。

除此之外,Windows 中的内存处理也有所不同,有时甚至违反直觉。这也与 2011 年相同。例如shared_buffers(来自PostgreSQL 文档 - 18.4. 资源消耗):

在 Windows 上,shared_buffers 的较大值效果并不好。您可能会发现将设置保持在相对较低水平并更多地使用操作系统缓存会获得更好的效果。Windows 系统上 shared_buffers 的有用范围通常为 64MB 到 512MB。

相关内容