2012-09-28 20 views
28

使用最廣泛的選擇使用池選項是以下幾點:什麼是在database.yml中的database.yml

adapter 
encoding 
database 
pool 
username 
password 
socket 
host 
port 
timeout 

我知道使用的最上面,但池。 所以我想知道database.yml中池選項的用法,或者我們需要爲具有非常大流量的應用程序設置任何其他參數。

回答

22

它設置每紅寶石過程可能的連接的數量。因此,如果您正在穿線您的導軌應用,或者您使用的交易過度。這裏的限制取決於你的設置。這樣考慮:

  • 50紅寶石處理每個
  • 與100個線程
  • 具有1000個同時連接

所以它是有道理的每個過程可以打開至多20個連接的設定一個MySQL (50 * 20 == 1000)在給定的時間。所以你可以將pool的值設置爲20或更少。

+0

在「每個有100個線程」中,這100個符合上面的等式嗎? (50 * 20 == 1000) –

+0

這是否意味着池大小僅取決於工作進程而不取決於線程? @moritz –

3

對於任何正在尋找這個問題的答案的人來說,基本思想似乎是數據庫只能支持這麼多的同時連接,所以需要一種方法來限制打開的連接。 pool屬性指定在給定時間可以打開的最大連接數。

有關更多信息,請參閱http://guides.rubyonrails.org/configuring.html#database-pooling。該指南沒有明確說池是應用程序的總連接,但這是我閱讀後得到的感覺。

相關問題