database.yml中pool选项的用途是什么

时间:2012-09-28 07:02:33

标签: mysql ruby-on-rails ruby-on-rails-3 connection-pooling

database.yml中使用最广泛的选项如下:

adapter
encoding
database
pool
username
password
socket
host
port
timeout

我知道使用上面的大部分但是池。 所以我想知道database.yml中pool选项的用途是什么,或者我们需要为流量非常大的应用程序设置任何其他参数。

3 个答案:

答案 0 :(得分:26)

它设置每个ruby进程可能的连接数量。因此,如果您正在线程化您的rails应用程序,或者您过度使用交易。此处的限制取决于您的设置。考虑一下:

  • 50个红宝石过程
  • 每个有100个帖子
  • 设置为1000个并发连接的mysql

所以有意义的是,每个进程在给定时间最多可以打开20个连接(50 * 20 == 1000)。因此,您可以将pool值设置为20或更小。

答案 1 :(得分:4)

对于正在寻找这个问题答案的其他人来说,基本的想法似乎是数据库只能支持这么多的同时连接,因此需要一种限制开放连接的方法。 pool属性指定在给定时间可以打开的最大连接数。

有关详细信息,请参阅http://guides.rubyonrails.org/configuring.html#database-pooling。该指南没有明确说明池是应用程序的总连接数,但这是我读完后的感觉。

答案 2 :(得分:1)