2009-06-30 84 views
2

我有一臺Windows Server 2003機器,我將用它作爲Postgres數據庫服務器,該機器是雙核心3.0Ghz Xeon,具有4 GB ECC內存和4個120GB 10K RPM SAS驅動器,全部剝離。PostgreSQL安裝的配置建議

我讀過默認的Postgres安裝配置爲在32MB內存的486上很好地運行,並且我已經閱讀了幾個關於配置優化的網頁 - 但希望從我的Stackoverflow窺視中更具體一些。

一般來說,它只能服務1個數據庫(可能是一兩個),但問題在於數據庫有一個特別龐大的表(數億條記錄只有幾個顏色)。目前,使用默認配置,這並不慢,但我認爲它可能會更快。

有人可以請給我一些指導和recomendations的配置設置將用於這樣的服務器。

+0

你(可能)問錯了人在這裏,你應該頭部到http://serverfault.com/,並要求那裏,你」會得到更好的迴應。 – 2009-06-30 02:34:54

+0

我已經問過堆棧溢出中的simmilar問題,並取得了巨大的成功 - 主要是因爲它配置服務器的一件事 - 另一件事完全是爲了破壞將影響客戶端代碼的配置。 – Ash 2009-06-30 04:57:58

回答

5
  • 4 *剝離驅動器是一個壞主意—任何這種驅動器將失敗,那麼你將失去所有的數據,甚至SAS驅動器有時會失敗—與4驅動程序,它比1驅動器的可能性4倍;你應該去RAID 1+0

  • 現在使用最新版本的Postgres 8.3.7;每個主要版本都有很多性能改進。

  • 將參數設置爲postgresql.conf約爲您的內存的1/4。

  • effective_cache_size設置爲大約1/2的內存。

  • checkpoint_segments設置爲大約32(檢查點每512MB)和checkpoint_completion_target至大約0.8。

  • 設置default_statistics_target約100

  • 遷移到Enterprise Linux或FreeBSD:Postgres的作品在Unix類系統更好— Windows的支持是最近才加入的,不是很成熟。

你可以閱讀更多此頁上:Tuning Your PostgreSQL Server — PostgreSQL Wiki

0

我的經驗表明(在限制之內)硬件通常是數據庫性能中最不重要的因素。

假設您有足夠的內存將常用數據保存在緩存中,那麼您的CPU速度可能會在頂級機器和普通或花園盒之間變化10-50%。

但是,在重要搜索中丟失的索引或寫得不好的遞歸觸發器可能很容易在響應時間中產生1,000%或10,000%或更多的差異。

如果不知道你的表結構和行數是否正確,我想任何人都會建議你的硬件看起來足夠好。只有你的數據庫結構會殺了你。 :)

UPDATE:

不知道具體的查詢和索引的細節,有沒有我們可以做更多的事情。一般來說,即使知道查詢,如果不實際安裝和運行具有真實數據集的查詢,通常也很難進行優化。

鑑於服務器的成本以及您的時間成本,我認爲您需要在書中投入30美元。然後用測試數據安裝你的數據庫,運行查詢,看看什麼運行良好,哪些運行不好。修復,沖洗並重復。

這些書兩者都是特定於SQL Server和都有很高的評價:如果

http://www.amazon.com/Inside-Microsoft%C2%AE-SQL-Server-2005/dp/0735621969/ref=sr_1_1

http://www.amazon.com/Server-Performance-Tuning-Distilled-Second/dp/B001GAQ53E/ref=sr_1_5

+0

是的,它的服務器是一個野獸,毫無疑問......這個問題更多的是關於配置的改進,而不是專門關於「硬件」。我的問題在stackoverflow的問題是,因爲我非常清楚,用於調整內存緩存和查詢性能的設置直接與最大連接相關,並且我不想更改會使情況更糟的設置,或者通過限制數據庫連接的數量或過度使用內存。 – Ash 2009-06-30 05:01:49