2010-07-13 53 views
4

所以我是Rails的新手,所以請原諒基本問題。Rails問題,日誌中的SQL語句

我看到鐵軌吐出了這一點(控制檯)爲我做我的控制每一個要求。爲什麼?我甚至沒有做任何數據庫操作,我剛開始編寫HelloWorld rails應用程序。我也挑MySQL作爲數據庫創建時,這個Rails項目(軌道-d的mysql的HelloWorld)

SQL (0.1ms) SET NAMES 'utf8' 
SQL (0.1ms) SET SQL_AUTO_IS_NULL=0 

所以我注意到,該軌道嘗試建立爲每個請求一個數據庫連接,無論你是否做了DB /的ActiveRecord操作。它在執行action_controller/dispatch之後執行此操作。這似乎是浪費數據庫資源給我,爲什麼建立一個連接到DB時,我甚至可能不做一個ActiveRecord操作?

+0

+1我也有興趣回答 – zengr 2010-07-13 18:11:35

回答

1

你在每次請求,因爲在開發模式下看到這個。在生產模式下(或啓用類緩存)時,只有當連接添加到連接池時纔會發生一次。

+0

所以這裏是我所做的 - 我改變了config.cache_classes = true在我的env/development.rb&我沒有看到上述的每個請求上的SQL輸出,就像你說的。但是我也嘗試了一件事 - 在運行幾個helloworld控制器請求之後停止mysql實例。 stoppng mysql後,helloworld控制器請求抱怨它無法連接到mysql,這是我的原始觀點。當我甚至不需要它時,這看起來像是浪費CPU週期來檢查連接。不想開始火焰戰爭:)但這似乎是一個設計缺陷的軌道? – kapso 2010-07-13 18:27:32

+0

這當然是一個設計決策,其中一些將支持甚至有人會叫一個缺陷:) 注意:如果你不需要在你的應用程序的ActiveRecord的一切,你可以在environment.rb文件中禁用它,但否則,我*認爲*你堅持這一點。這是相當微不足道的開銷,但是,對於任何請求,這可能毫無意義。 – daryn 2010-07-13 19:04:01

+0

我同意,謝謝你的輸入 – kapso 2010-07-13 19:14:19