May 24, 2018
Once your Rails app begins seeing consistent traffic, slow SQL queries will likely rear their ugly head. Simple things like using find_by_sql can make a big improvement, but how can you easily tell where your app is slowing down?
While PostgreSQL and MySQL can log slow queries, it's difficult to gleam actionable information from this raw stream. The slow query logs lack application context: where's the LOC generating the query? Is this slow all of the time, or just some of the time? Which controller-action or background job is the caller?
Scout and the
scout_apm gem help you prioritize your database optimization efforts. Once the gem is installed and the database monitoring addon is enabled, Scout continually analyzes your SQL queries. Slow queries are bubbled up as insights on your app dashboard:
Queries are analyzed across three primary dimensions, helping you focus on database optimizations that will most improve your app:
When you click on a slow query query insight, you'll see that query's call time information in the context of the calling controller-action:
From there, you can view individual transaction traces where the query occurred and the source code location that's responsible for the query:
Every production Rails app has slow queries: knowing which are most worth your time to optimize is the challenge. Scout helps you prioritize your efforts and tracks queries down to the source and git commit.
Start hunting down those slow ActiveRecord queries today with a 14-day trial of Scout.