2010-07-13 70 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