这个话题是在2011年提出的,大家的共识是,有一些devise上的考虑可以使PostgreSQL在Linux上占得先机。 现在是2015年,有没有改变? 如果有什么事情使得PostgreSQL在Windows上变慢,有人可以总结这些观点吗?
如果我在这个答案中提出的要点得到了照顾,我会说PostgreSQL仍然能够很好的与Windows相媲美。 与2011年相比,我看不出有什么重大区别。
根据我的经验, 主要关心的是没有Windows进程阻碍,所以PostgreSQL 9.0 High Performace(2010)这本书的引用仍然在很大程度上:
不可预测的性能和Windows
严重的数据库pipe理员对使用类UNIX系统的服务器有强烈的历史偏见。 这里的第一个例子是使用Windows来代替,因为生成的图更容易阅读,因此更好地介绍本节的概念。 但这样做提醒了我为什么Windows不是那么多人的首选数据库托pipe操作系统。
获得有用的基准testing结果要求系统处于静止状态:没有运行的其他程序会破坏准备测量的结果。 在启动到Windows Vista中以生成这些结果时,我发现TrustedInstaller进程占用了大量的CPU和磁盘资源。 事实certificate,Windows Update已经决定是时候安装下一个主要的Vista服务包了; 它在后台下载部分,并推动我在任何机会升级。 两个小时后,我完成了所有背景活动,迫使我照顾,并有一个闲置的系统能够运行这些testing。
您可能认为倾向于使用Windows 2012的服务器核心版本可能会补救这一点。 MSDN文章为什么服务器核心有用? (关于Windows 2008)却说:
在介绍服务器核心的好处之前,让我们来阐述一个误解:提高性能并不是运行服务器核心而是完全安装Windows Server 2008的好处之一。
除此之外,内存处理在Windows中也不同,有时也违反直觉。 这也和2011年一样。例如, shared_buffers (来自PostgreSQL Documentation – 18.4。Resource Consumption ):
在Windows上,shared_buffers的大值并不如此有效。 您可能会发现更好的结果保持相对较低的设置,而更多地使用操作系统caching。 Windows系统上的shared_buffers的有用范围通常为64MB到512MB。