使用外部连接池有什么好处?
我听说大多数其他应用程序都会为每个工作单元打开一个连接。例如,在 Rails 中,我认为这意味着每个请求都可以打开一个新连接。我假设连接池将使这成为可能。
我能想到的唯一好处是它允许您拥有 1,000 个前端进程,而无需运行 1,000 个 postgres 进程。
还有其他好处吗?
Rails 有内置连接池 http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html:
- 只需像 Active Record 2.1 及更早版本一样使用 ActiveRecord::Base.connection(预连接池)。最终,当您完成连接并希望将其返回到池中时,您可以调用 ActiveRecord::Base.clear_active_connections!。当与 Action Pack 的请求处理周期结合使用时,这将是 Active Record 的默认行为。
- 使用 ActiveRecord::Base.connection_pool.checkout 从池中手动检出连接。您负责在完成后通过调用 ActiveRecord::Base.connection_pool.checkin(connection) 将此连接返回到池中。
- 使用 ActiveRecord::Base.connection_pool.with_connection(&block),它获取一个连接,将其作为块的唯一参数,并在块完成后将其返回到池中。
这个已经可用了从2.2版本开始 http://guides.rubyonrails.org/2_2_release_notes.html#connection-pooling。你会看到一个pool
你的参数database.yml
用于控制它:
pool
:表示连接池大小的数字(默认5)
我认为在其下面分层另一个池化系统没有多大意义,如果你尝试的话,它甚至可能会混淆 AR 的池化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)