当我打开现有应用程序的控制台并输入:
时2.1.1 :001 > User.first
User Load (17.6ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> #<User id: xxxx .... >
下次输入查询:
2.1.1 :002 > User.first
User Load (0.8ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> #<User id: xxxx .... >
您可以看到rails查询数据库所用的时间之间的差异。是否可以在控制台中使用缓存。这在运行应用程序中的表现如何。它是否有更多的时间,甚至是缓存,它究竟是在做什么的。
答案 0 :(得分:6)
数据库服务器在查询缓存中缓存查询。
有关mysql数据库查询缓存的文档,请参阅此处:https://dev.mysql.com/doc/refman/5.1/en/query-cache.html
ActiveRecord还执行查询缓存:
http://edgeguides.rubyonrails.org/caching_with_rails.html
这两种情况都可能发生,具体取决于您的系统配置。
答案 1 :(得分:1)
如果您正在使用rails 4,则不会立即建立数据库连接,直到您进行查询:
2.1.1 :001 > User
=> User(no database connection)
2.1.1 :002 > User.first
User Load (28.8ms)
2.1.1 :003 > User.first
User Load (1.9ms)
2.1.1 :004 > User.last
User Load (2.8ms)
因此,初始查询是建立数据库连接。然后使用缓存(如其他答案中所述)并已建立连接。