我正在运行一个 Rails 2.3.5 应用程序,它支持我将 mysql 连接集中到我的数据库。但我记得读到我的混合服务器是单线程的。对于单线程应用程序来说,连接池有什么意义?有没有办法让我的应用程序多线程化?
此外,连接池是否理解 ruby 1.8 有“绿色”线程?
干杯!
最佳答案
管理连接
对于像 Mongrel/Passenger/etc 这样的单线程服务器来说,连接池的主要好处是连接是在主 Rails 请求处理之外的 Rack 处理程序中建立/维护的。这允许建立一次连接而不是多次建立连接,因为它以不同的方式使用。目标是重用已建立的连接并最小化连接数量。这应该可以防止在给定的请求处理周期内甚至可能在请求之间重新连接(如果我没记错的话)。
多个并发连接
虽然大多数用例(Mongrel/Passenger)都是单线程的,并且一次只能使用一个连接,但 JRuby 和环境/应用程序服务器具有完整的多线程支持。 Rails 从 2.2 开始就是线程安全的
TL;博士:
池自动建立连接。有些人确实使用池中的多个并发数据库连接。
关于mysql - Rails 连接池如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5131772/