2016-12-07 88 views
0

我想了解ActiveRecord如何连接到每个模型的数据库。所以我们假设我们有2个模型和一个数据库。在两种模型上执行简单的Model.find时,这是否会为每个模型创建一个新的数据库连接,以便它具有自己定义的连接,或者是否存在与已在两个模型中共享的已初始化的数据库的单个连接。有谁知道它在做什么code?是否ActiveRecord每个模型建立一个新的数据库连接

我想了解ActiveRecord如何实现这一点。

回答

2

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

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

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

+0

所以“连接池”实际上是个人连接到数据库? – Peter

+1

是的,他们保持打开一段时间的基础上配置 – usha

+0

谢谢你为我清理。另外,如果你使用的是MongoDB,它有自己的内部连接池,所以ActiveRecord的连接池在这里没有必要,对吧? – Peter

相关问题