2016-12-07 76 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

相關問題