Rails 4.2性能提升新特性Adequate Record介绍

最近看了Rails 4.2的更新bolg, 发现在Rails 4.2中加了个Adequate Record的新特性,这个特性是用来改善数据库查询性能的,看了介绍, 把我所理解的写了下来。

性能提升变化图

性能变化图

测试的是Model.find(id)Model.find_by_name(name)方法, 提升了将近2倍,真厉害啊!

性能提升方法

一般的ActiveRecord查询转换成SQL数据库查询包含下面3个步骤

查询步骤

而最新的rails一般find查询都会被转化为如下SQL

1
2
3
4
SELECT * FROM posts WHERE id = ? [id, 10]
SELECT * FROM posts WHERE id = ? [id, 12]
SELECT * FROM posts WHERE id = ? [id, 22]
SELECT * FROM posts WHERE id = ? [id, 33]

你可以注意到SQL查询语句都是一样的,只是参数不一样。所以可以将3个步骤的第一步缓存起来, 如果下次做类似find查询,就可以跳过第一步,这样性能就提升了。

但性能提升只限下面3个方法:

1
2
3
Post.find(id)
Post.find_by_name(name)
Post.find_by(name: name)

参考链接

http://tenderlovemaking.com/2014/02/19/adequaterecord-pro-like-activerecord.html

评论