Hegwin.Me

南朝四百八十寺,多少楼台烟雨中。

Rails优化SQL可能用到的工具

Tools to Help to Improve SQL in Rails

你是否遇到过遇到 Rails app 在渲染页面很慢的情况? 你是否想找到造成它“慢”的原因?性能瓶颈究竟在哪里?是它执行 SQL 查询数据慢(可能是N+1,或者是没有合适的索引),还是其他的原因,比如view太大?

进行性能优化一直是一个典型的“难定位”问题;目前我个人是用到了以下几个工具去找出问题到底在哪里:

  1. New Relic 老牌的性能检测工具,与Rails集成之后,在Database监控中能显示最慢的Query之类的,不过这需要New Relic至少订购了Essentials级别的计划。

  2. Gem: active-record-query-trace 你可以在log中看到每个SQL是来自于哪一条代码。

    使用场景: 用时候会发现尽管在controller中已经查询了/预加载数据,但在渲染view的时候,还是出现了SQL查询,这个工具可以帮你追踪到是view中哪一行代码造成了数据库查询。不过这个工具其实并不区分SQL是在controller还是view里查询,只要进行了SQL操作,都会显示调用栈的前N个记录(N默认为5)。

  3. Gem: bullet 这个gem可以用来提醒你,项目中发生了N+1查询,在Sinatra中也可以使用。

< Back