ActiveRecord是否为每个模型建立新的数据库连接

时间:2016-12-07 14:37:06

标签: ruby-on-rails ruby rails-activerecord

我试图了解ActiveRecord如何基于每个模型连接到数据库。所以假设我们有2个模型和一个数据库。当你在两个模型上做一个简单的Model.find时,这会为每个模型创建一个新的数据库连接,因此它有自己定义的连接,或者是已经初始化的数据库的单个连接,它们在两个模型之间共享。有谁知道它在code?

中的位置

我试图了解ActiveRecord如何实现这一目标。

1 个答案:

答案 0 :(得分:2)

ActiveRecord使用连接池。当您尝试与数据库交互时,将从池中获取连接,进行查询并在查询后将连接返回到池。所有这些都由ActiveRecord在后​​台处理。 您可以在数据库配置中调整池中的连接数

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html

您可以轻松测试。在控制器操作中执行一个需要几分钟的查询。向操作发出多个请求,您将能够看到连接错误