【发布时间】:2011-02-27 06:18:31
【问题描述】:
我正在运行一个 rails 2.3.5 应用程序,它支持我将 mysql 连接池化到我的数据库。但我记得读过我的杂种服务器是单线程的。对于单线程应用程序来说,拥有一个连接池有什么意义?有没有办法让我的应用程序多线程?
另外,连接池是否理解 ruby 1.8 有“绿色”线程?
干杯!
【问题讨论】:
标签: mysql ruby-on-rails connection
我正在运行一个 rails 2.3.5 应用程序,它支持我将 mysql 连接池化到我的数据库。但我记得读过我的杂种服务器是单线程的。对于单线程应用程序来说,拥有一个连接池有什么意义?有没有办法让我的应用程序多线程?
另外,连接池是否理解 ruby 1.8 有“绿色”线程?
干杯!
【问题讨论】:
标签: mysql ruby-on-rails connection
管理连接
对于像 Mongrel/Passenger/etc 这样的单线程服务器,连接池的主要好处是连接是在 Rails 主请求处理之外的 Rack 处理程序中建立/维护的。这允许建立一次连接而不是多次建立连接,因为它以不同的方式使用。目标是重用已建立的连接并最小化连接数。这应该可以防止必须在给定的请求处理周期内重新连接,甚至可能在请求之间重新连接(如果我没记错的话)。
多个并发连接
尽管大多数用例(Mongrel/Passenger)都是单线程的,并且一次只能使用一个连接 - 但 JRuby 和环境/应用程序服务器具有完整的多线程支持。 Rails 从 2.2 开始就是线程安全的
TL;DR:
池自动建立连接。有些人确实使用池中的多个并发数据库连接。
【讨论】: