因此,我们必须的MySQL慢查询日志的一套应用程序,主要是在Ruby中,一些使用railsactiverecord他人使用sequel。我们希望能够轻松地将特定的(MySQL)慢查询返回到生成它的代码。是否有可以在这些工具中启用的功能,或者可以应用于它们的修补程序,这些功能添加了插入到SQL注释中的工具...类似于FILE和功能标识符?工具或补丁的Ruby续集或ORM插装SQL查询慢查询日志分析
3
A
回答
2
有趣的问题,这里是我会怎么处理呢?
我会用config.active_record.auto_explain_threshold_in_seconds
到automatically explain slow queries,因为它听起来像你正在做的。
然后,我将覆盖ActiveRecord::Explain
中的logging_query_plan
方法,将任何相关数据添加到您的日志中。这里是一个将当前堆栈跟踪的例子:
# /config/initializers/add_additional_instumentation_to_explain.rb
module ActiveRecord
module Explain
def logging_query_plan # :nodoc:
return yield unless logger
threshold = auto_explain_threshold_in_seconds
current = Thread.current
if threshold && current[:available_queries_for_explain].nil?
begin
queries = current[:available_queries_for_explain] = []
start = Time.now
result = yield
if Time.now - start > threshold
# START ADDING ADDITIONAL INFORMATION
begin
puts 'ADDING ADDITIONAL INFORMATION...'
raise 'foo'
rescue
puts 'DISPLAYING THE CURRENT STACKTRACE FOR THE FOLLOWING EXPLAIN'
puts [email protected]
end
logger.warn(exec_explain(queries))
end
result
ensure
current[:available_queries_for_explain] = nil
end
else
yield
end
end
end
end
,我宁愿不依赖于从铁轨整个修饰方法的方法,但是这是我能得到它可靠地工作的唯一途径。
对于它的价值来说,这将很容易转化为一个宝石,为每个rails版本添加一个新的宝石,并且为每个应用添加相关的宝石版本,因为它听起来像是可能的支持多种版本的导轨。这将有助于使所述方法的一些脆性最小化。无论如何,希望这有助于 - 祝你好运!
0
我强烈建议rack-mini-profiler帮助快速了解您的Rails(或其他基于机架的)应用程序如何花费时间。它特别擅长显示哪些Ruby代码生成了哪些SQL语句。请访问以下全部三个链接,学习如何使用它。祝你好运。
http://railscasts.com/episodes/368-miniprofiler
http://samsaffron.com/archive/2012/07/12/miniprofiler-ruby-edition
相关问题
- 1. 如何分析MySQL慢速查询日志或MySQL常规查询日志?
- 2. Drupal缓慢查询日志分析
- 3. 慢速查询日志分析器
- 4. 如何分析WordPress安装的慢查询日志?
- 5. SQL查询Oracle日志分析
- 6. postgres日常查询分析工具
- 7. 最佳Oracle SQL查询分析工具
- 8. mysql慢查询日志
- 9. joomla缓慢查询日志
- 10. 跳过慢查询日志
- 11. SQL查询或子查询
- 12. MySQL慢查询日志 - 缓慢多慢?
- 13. MySQL SQL查询分析和查询成本工具和技术
- 14. 任何图形MySQL查询日志分析器或Visualizer?
- 15. MYSQL慢查询“慢查询日志” - 但相同的查询手动
- 16. 带集合的Hibernate或SQL查询M-N成员?
- 17. 缓慢的查询大于或等于7秒从MySQL日志
- 18. Laravel 4 mongodb分析器/查询日志
- 19. 如何安装Hadoop插件或补丁?
- 20. 用于显示分层数据的SQL Server查询或工具
- 21. 分析SQL查询
- 22. 复杂的SQL查询或查询
- 23. SQL Server - 查询日志?
- 24. 基于最大日期或最大日志ID SQL查询
- 25. SQL查询/慢
- 26. 慢查询日志中记录更快的查询日志文件中
- 27. mysql的慢查询日志记录是查询速度更快
- 28. 避免缓慢查询日志中的RAND()查询
- 29. 解析日志 - 单个sql查询,多个循环或多个sql查询,无循环
- 30. 解析和或查询制定SQL