Linux

PostgreSQL 是否在 Windows 和 Linux 上執行?

  • March 11, 2015

這個話題是在 2011 年提出的,大家一致認為有一些設計考慮可以讓 PostgreSQL 在 Linux 上佔有一席之地。現在是 2015 年,情況有變化嗎?如果有什麼東西讓 PostgreSQL 在 Windows 上變慢,有人可以總結一下這些要點嗎?

如果我在這個答案中列出的要點得到照顧,我會說 PostgreSQL 在 Windows 上仍然表現得相當好。與 2011 年相比,我沒有看到任何重大差異。

根據我的經驗,這主要是要注意沒有 Windows 程序妨礙,因此PostgreSQL 9.0 High Performanceace (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 Documentation - 18.4. Resource Consumption):

在 Windows 上,shared_buffers 的大值沒有那麼有效。您可能會發現保持設置相對較低並更多地使用作業系統記憶體會獲得更好的結果。Windows 系統上 shared_buffers 的有用範圍一般為 64MB 到 512MB。

引用自:https://serverfault.com/questions/674609