Skip to content
Just like the query_analyzer plugin, but logs to the db instead of the log file
Find file
Latest commit 7496abc @smtlaissezfaire README updates


Enhanced Query Analyzer Rails Plugin (for MySQL)


Install it in vendor/plugins:

./script/plugin install git://

Add the model and migration:

./script/generate enhanced_query_analyzer


rake db:migrate


All select queries will be logged to the query_logs table. You now have the ability to store historical data of all of your database access.

If you'd like finer grained control over logging, provide a block to EnhancedQueryAnalyzer.log_if:

EnhancedQueryAnalyzer.log_if { |query, time| <true | false> }

For instance, if you'd only like to log queries over a second:

EnhancedQueryAnalyzer.log_if { |_, time| time > 1 }

Or only log queries matching some regex:

EnhancedQueryAnalyzer.log_if { |query, time| query =~ /select.../ }

To turn off all logging:

EnhancedQueryAnalyzer.log_if { |_, _| false }

Or in everything but the test environment (this is recommended):

EnhancedQueryAnalyzer.log_if do |query, time|
  RAILS_ENV != "test"

You can also add the ability to dynamically run and log the explain of each query:

EnhancedQueryAnalyzer.explain_logging = true

Running Unit Tests

You'll need rspec and mysql. The database must be named 'query_analyzer_test'


Written by Scott Taylor <>. Sponsored by Eastmedia (


Dual licensed under the MIT & GPL licenses.

Something went wrong with that request. Please try again.