繁体   English   中英

rails连接池如何工作?

[英]How does the rails connection pooling work?

我正在运行Rails 2.3.5应用程序,该应用程序支持我将与数据库的mysql连接池化。 但是我记得读过我的杂种服务器是单线程的。 与单线程应用程序建立连接池有什么意义? 有办法对我的应用程序进行多线程处理吗?

另外,连接池是否了解ruby 1.8具有“绿色”线程?

干杯!

管理连接

对于像Mongrel / Passenger / etc这样的单线程服务器,连接池的主要好处是,在主Rails请求处理之外的Rack处理程序中建立/维护了连接。 由于以不同方式使用连接,因此可以建立一次或多次建立连接。 目标是重新使用已建立的连接并最大程度地减少连接数。 这应该避免必须在给定的请求处理周期内甚至可能在请求之间重新连接(如果我没记错的话)。

多个并发连接

尽管大多数用例(Mongrel / Passenger)是单线程的,并且一次只能使用一个连接-但是JRuby和环境/应用服务器具有完全的多线程支持。 从2.2开始,Rails一直是线程安全的

TL; DR:

池自动建立连接。 有些人确实使用池中的多个并发数据库连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM