Rails问题,日志中的SQL语句

Rails问题,日志中的SQL语句,sql,mysql,ruby-on-rails,Sql,Mysql,Ruby On Rails,我是Rails新手,请原谅我的基本问题 我看到rails(在控制台中)对我向控制器发出的每个请求都会这样做。为什么?我甚至没有做任何DB操作,我只是开始编写HelloWorld rails应用程序。在创建这个rails项目(rails-Dmysql-helloworld)时,我确实选择了mysql作为db 所以我注意到,rails尝试为每个请求建立DB连接,而不管您是否执行DB/ActiveRecord操作。它在执行控制器/调度操作后立即执行此操作。这对我来说似乎是对DB资源的浪费,为什么在我甚

我是Rails新手,请原谅我的基本问题

我看到rails(在控制台中)对我向控制器发出的每个请求都会这样做。为什么?我甚至没有做任何DB操作,我只是开始编写HelloWorld rails应用程序。在创建这个rails项目(rails-Dmysql-helloworld)时,我确实选择了mysql作为db


所以我注意到,rails尝试为每个请求建立DB连接,而不管您是否执行DB/ActiveRecord操作。它在执行控制器/调度操作后立即执行此操作。这对我来说似乎是对DB资源的浪费,为什么在我甚至可能不执行ActiveRecord操作的情况下建立到DB的连接呢???

您在每个请求中都会看到这一点,因为您处于开发模式。在生产模式下(或在类缓存打开的情况下),当连接被添加到连接池时,这种情况只会发生一次。

+1我也对答案感兴趣,所以我所做的是-我在我的env/development.rb中更改了config.cache\u classes=true&我没有像您所说的那样在每个请求上都看到上面的SQL输出。但是我还尝试了另一件事——在运行了几个helloworld控制器请求之后停止mysql实例。停止mysql后,helloworld控制器请求抱怨它无法连接到mysql,这是我的原意。这看起来像是在浪费CPU周期,在我根本不需要连接的时候检查连接。不想启动flame wars:)但这似乎是rails中的一个设计缺陷?这当然是一个设计决策,有些人会支持,有些人会称之为缺陷:)注意:如果你的应用程序中根本不需要activerecord,你可以在environment.rb文件中禁用它,但除此之外,我认为你会被卡住。这是一个相当小的开销,但是是的,它对于任何给定的请求都可能是毫无意义的。
SQL (0.1ms)   SET NAMES 'utf8'
SQL (0.1ms)   SET SQL_AUTO_IS_NULL=0