mysql - Rails 连接池如何工作?

标签 mysql ruby-on-rails connection

我正在运行一个 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/

相关文章:

ruby-on-rails - 收到消息的访问次数?

mysql - Rails - 如何遍历行值为 'x' 的数据库表列并显示在 html 表中

postgresql - 如何自动关闭 PostgreSQL 中的空闲连接?

c++ - bad_weak_ptr 同时使用从 boost::asio::io_context::service 继承的类

mysql - 创建唯一 key 作为 FK - MySQL

mysql - 如何找出可能发生 COMMIT 的位置?

java - 从数据库中选择音频文件

mysql - T-SQL,比较记录属性,然后进行后续日期比较

ruby-on-rails - 如何将重音字符与正则表达式匹配?

php - 改进显示 max_user_connections 的站点