`
xf986321
  • 浏览: 163981 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用rails_reviewer优化Rails数据库查询性能

阅读更多

使用rails_reviewer优化Rails数据库查询性能

最近在做的一个项目遇到严重的性能问题,主要是数据库查询过多,同事向我推荐了rails_reviewer 插件,它是我的前同事(不确定我进公司时他还在不在) David Stevenson 写的一个帮助你优化SQL查询的插件,它可以帮助你定位数据库查询的瓶颈所在,从而通过编制索引已经缓存关键变量来改进性能。

rails_reviewer的安装很简单:

$ script/plugin install git://github.com/dsboulder/query_reviewer.git
$ rake query_reviewer:setup

现在重启服务器,你就会在屏幕的左上角看到一个小窗口,点击这个窗口,就会显示加载当前页面的所有SQL查询,并且会告诉你那些是没问题的,那些是需要优化的,如下图:

picture-1.png

可以看到,在优化前这个请求执行了1101条SQL查询,并且大部分都是没有cache的,你可以通过rails_reviewer查看每条查询的 SQL语 句以及代码的调用栈,优化主要从两方面进行,一个是提高查询性能,这个可以通过添加索引,另一个就是减少查询数量,这个可以通过缓存变量,比如:


def production(name)
  @production_cache ||= {}
  @production_cache[name] ||= buildings.map{|b| b.production(name)}.sum
end

下面是优化后的结果,可以看到,优化后查询数从1101变成了94,时间则从800多毫秒减到了59毫秒,大约只有原来的10分之一不到:

picture-2.png

Add star Share Share with note

分享到:
评论

相关推荐

    Complex Rails system_Rails_优化_

    在构建复杂的Rails应用时,性能优化是至关重要的。Rails,作为一个强大的Web开发框架,虽然提供了丰富的功能和便利性,但如果不进行适当的优化,可能会导致应用程序响应时间变慢,资源消耗过大,甚至影响用户体验。...

    inspinia admin - v2.5 Rails_Full_Version

    Rails_Full_Version意味着这个压缩包包含了构建Inspinia Admin Rails版本所需的所有代码、数据库迁移、配置文件、示例数据等资源,以便开发者可以立即开始开发工作。 在使用这个压缩包时,你需要具备以下知识点: ...

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的..."你可以使用 rails_apps_composer gem 执行以下操作:

    weixin_rails_middleware, 微信集成 ruby weixin_rails_middleware for integration weixin..zip

    使用 `weixin_rails_middleware` 时,开发者应遵循最佳实践,如保持请求和响应的异步处理、合理设计消息模板、确保数据安全性等,以提升用户体验和应用性能。 综上所述,`weixin_rails_middleware` 是一款强大且...

    rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器.zip

    rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...

    agile_web_development_with_rails_3rd_edition.9994652073.pdf

    本书涵盖了从环境搭建到部署的整个开发流程,包括但不限于:Ruby和Rails的基础知识、数据库设计、RESTful API的构建、表单处理、用户认证、测试驱动开发(TDD)、持续集成等主题。此外,书中还穿插了大量的实践案例...

    rails_db_localize:轻松管理数据库对象翻译的瑰宝

    rails_db_localize 轻松管理数据库对象翻译的宝石 为什么我做了这个宝石?... 关于性能, rails_db_localize使用一些优化来获取行(缓存和哈希系统)。 3 /仅需查询所有翻译 由于使用了缓存系统, ra

    inspinia admin - v2.5 Rails_Seed_Project

    本文将详细探讨其在Rails框架下的种子项目(Rails_Seed_Project),旨在帮助开发者更好地理解和运用这一强大的工具。 首先,我们来了解一下“Inspinia Admin”。这是一款基于Bootstrap 3构建的响应式后台模板,提供...

    bhl_rails_solr-源码.rar

    2. **查询接口**:bhl_rails_solr会提供一个简单的查询API,允许开发者使用Solr的查询语法,通过Rails模型直接执行全文搜索和其他复杂的检索操作。 3. **Solr配置**:源码中可能包含针对不同环境(如开发、测试、...

    InspiniaAdmin 2.5 Rails_Seed_Project

    此外,Rails_Seed_Project包含了初始化数据库的种子文件,通常位于db/seeds.rb中。开发者可以在这个文件中填充初始数据,或者设置一些默认值,以便于快速启动项目。数据库迁移文件位于db/migrate目录下,这些文件...

    rails_best_practices:Rails项目的代码度量工具

    rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...

    rails_admin_acts_as_list:rails_admin插件以对记录进行排序

    介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...

    Ruby on Rails_ Up and Running

    RUBY的经典之作,对其在RAILS下开发写得很详细

    ruby rails_kindeditor(编译器)插件

    接着,在需要使用富文本编辑器的地方,比如文章或博客的模型中,设置相应的数据库字段类型为 text,并在视图文件中使用 `rails_kindeditor` 提供的 helper 方法来渲染编辑器。 集成过程中,你可能需要关注以下几个...

    inspinia_admin_v2.5_Rails_Full_Version

    该模板包含的文件列表“inspinia_admin_v2.5_Rails_Full_Version”很可能包括以下组成部分: 1. **静态资源**:CSS样式文件、JavaScript脚本和图像资源。这些文件用于构建用户界面,包括响应式布局、图表、表单元素...

    RestFul_Rails_Dev_pdf_v_0.1.zip

    本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...

    rails_admin_content_builder:使用rails_admin创建内容的简单方法

    gem 'rails_admin_content_builder' 运行生成器并进行迁移 rails g rails_admin_content_builder rake db:migrate 在app / assets / application.scss中添加样式 * = require rails_admin_content_builder 用法 ...

    与devise_invitable一起使用的自定义rails_admin邀请操.zip

    这个压缩包"与devise_invitable一起使用的自定义rails_admin邀请操.zip"可能包含了实现这一功能的具体代码和配置。 首先,让我们详细了解一下Devise Invitable。这是一个Devise的插件,为用户提供邀请功能。当用户...

    rails_admin_state:使用state_machine和rails_admin管理模型的状态

    从rails_admin正确管理状态 允许从Rails Admin轻松地将state_machine事件发送到模型,包括对ActiveRecord \ Mongoid和自定义状态字段名称的支持以及每个模型多个状态机的支持。 截屏 正在安装 将此行添加到应用程序...

Global site tag (gtag.js) - Google Analytics