装了C版本的MySQL数据库适配器以后,Rails工程的性能确实提升了许多。当时安装时使用的是gem install mysql的默认命令,因为是Linux环境,所以安装的版本是2.7。
偶然的一个机会,看到了
http://railsexpress.de/blog/articles/2006/10/05/make-ruby-mysql-create-less-garbage。才知道原来这个C版本的MySQL数据库适配器,居然会为记录中的每一行创建一个列名字符串。而Stefan Kaes做了一个patch可以减少列名字符窜的生成,从而提升查询的性能。
Stefan Kaes还在他的博客里抱怨Ruby/MySQL的作者没有理会他的关于这个改善的mail。不过这已经是2006年底的事了,
http://www.tmtm.org/en/mysql/ruby/上,最新版本已经是2.8了(但是用gem install mysql安装不了2.8版)。在version 2.8pre1,已经做了相应的修改。
2007-12-26
version 2.8pre1
for Ruby 1.9.0
Incompat: Mysql::Result#each_hash don't create column name string each row. it's shared.
Incompat: Mysql#query with block no longer turn on multi-statements mode automatically.
让我们自己来做个2.8的gem包吧,这样至少在我自己的gem服务器上,可以用gem install mysql来进行安装。
先解压缩MySQL-2.7.gem文件,看看gemspec里都写了些什么。
tar xf mysql-2.7.gem
tar xzf data.tar.gz
mysql.gemspec的内容如下。
--- !ruby/object:Gem::Specification
rubygems_version: 0.8.11
specification_version: 1
name: mysql
version: !ruby/object:Gem::Version
version: "2.7"
date: 2005-10-10 00:00:00 +02:00
summary: MySQL/Ruby provides the same functions for Ruby programs that the MySQL C API provides for C programs.
require_paths:
- lib
email: tommy@tmtm.org
homepage: http://www.tmtm.org/en/mysql/ruby/
autorequire: mysql
has_rdoc: false
required_ruby_version: !ruby/object:Gem::Version::Requirement
requirements:
-
- ">"
- !ruby/object:Gem::Version
version: 0.0.0
version:
platform: ruby
files:
- COPYING
- COPYING.ja
- README.html
- README_ja.html
- extconf.rb
- mysql.c.in
- test.rb
- tommy.css
- mysql.gemspec
extensions:
- extconf.rb
而mysql-ruby-2.8.tar.gz中都有些什么文件呢?
COPYING
COPYING.ja
README.html
README_ja.html
extconf.rb
mysql.c
test.rb
tommy.css
原来没有mysql.c.in,而多了mysql.c。确认了一下双方的extconf.rb内容,2.8确实可以直接使用mysql.c文件。(2.7里需要对mysql.c.i做一些修改后,最后生成mysql.c)
把2.7的mysql.gemspec拷贝到2.8的目录下,然后修改mysql.gemspec。
把版本由2.7改成2.8,再把mysql.c.in改成mysql.c。
接下来做成新的gem包。
gem build mysql.gemspec
试着安装一下。
$ sudo gem install -l mysql-2.8.gem
Building native extensions. This could take a while...
Successfully installed mysql-2.8
虽然显示成功了,不过还是要做后续动作的。进到安装好的ruby gem的目录,我这里是/usr/local/lib/ruby/gems/1.8/gems/mysql-2.8.
ruby extconf.rb
make && make install
重启rails工程,进行测试吧。对于下边的查询语句。
Product.find(:all,:conditions => 'where id > 500000',:limit => 50)
2.7的时候,执行3000次用了23.2秒。而用2.8之后,只用了16.7秒。性能提升了28%。对于查询返回多条的记录,性能上改进了很多。对于insert,update,delete动作,基本没有变化。
附件里有我做成的gem包。由于上传文件的限制,需要把tar改成gem。
35K的文件居然上传不了?改时间再上传吧。知道原因了,是Chrome不支持这里的文件上传。
分享到:
- 2008-12-12 17:46
- 浏览 1694
- 评论(6)
- 论坛回复 / 浏览 (6 / 4488)
- 查看更多
相关推荐
rails-hackernews-reddit-producthunt-clone, 黑客 news/reddit/social 链接分享网站 用 Rails 构建 Rails 上的 Reddit-Hackernews-ProductHunt克隆演示 这是一个 readme.md的Ruby on Rails 应用程序,模仿了 Hacker...
# yum install httpd \httpd-devel \openssl-devel \zlib-devel \mysql-server \mysql-devel \gcc \gcc-c++ \curl-devel\libyaml 2 Ruby 1.9.2, RubyGems # cd ~/source/ # wget ftp://ftp.ruby-lang.org/pub/...
– c:/ruby/lib/ruby/gems/1.8/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so 实际上是找不到连接所需的dll文件:libmySQL.dll 在mysql安装目录下的bin目录下将此文件复制到ruby的bin目录下即可解决此问题. ...
Ruby 版数据库连接池, 可以参考。 数据库是postgresql
使用路径遍历(CVE-2019-5418)和Ruby对象反序列化的RCE on Rails 5.2.2(CVE-2019-5420) 技术分析: CVE-2019-5418- CVE-2019-5420- //hackerone.com/reports/473888 安全部门: CVE-2019-5418- //groups....
解决 Rails bundle 安装不上 mysql gem包的问题 环境 ubuntu 12.04 ruby-2.1.1 首先 新建一个的一个项目,在该项目上执行 bundle install 提示 代码如下: … Make sure that gem install mysql2 -v ‘0.3.16’; ...
rails-dev-box, 面向 Ruby on Rails 核心开发的虚拟机 用于 Ruby on Rails 核心开发的虚拟机简介注意:这个虚拟机不是为 Rails 应用程序开发而设计的,只是为。 这个项目自动设置开发环境,以便在 Ruby on Rails ...
gem 'ace-rails-ap' gem 'bootstrap-markdown-editor-rails' 您还需要Bootstrap 3,jQuery。 用法 需要带有链轮CSS: /*= require bootstrap-markdown-editor */ 链轮也需要JS: //= require ace-rails-ap //= ...
Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
rails-settings, 使用 Ruby on Rails 管理设置 Rails的设置 ruby gem,通过在单独的数据库表中将它们存储为序列化的哈希来处理。 包含命名空间和默认值。要求ruby 1.9.3或者更高版本Rails 3.1或者更高版本( 包括 ...
opal-rails, 将 ruby 带到Opal的Rails Rails 绑定 蛋白石 Rails 用于蛋白石 ruby 引擎的 Rails 绑定。 ( 变更日志 )安装在你的Gemfile 中gem 'opal-rails'或者当你构建新的Rails 应用程序时:rails
ruby on rails 安装 组件下载 连接mysql mssql等数据库 包含一个完整的一对多数据库例子方案
Ruby.on.Rails.Tutorial,Learn.Web.Development.with.Rails,Third.Edition-中文版 文字版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
学院管理系统-Ruby on Rails 学校/学院管理系统 该系统是一个非常全面的系统,并且在考虑到学校和学院功能的前提下进行了清晰的查看。 它使用以下技术构建- Ruby On Rails Bootsrap(CSS / JavaScript框架) ...
NULL 博文链接:https://crabby.iteye.com/blog/1478286
ruby rails demo, rails 简单demo。 (1)到ruby官网:http://www.ruby-lang.org/en/下载window安装包,并安装, ruby版本: ruby -v (2)安装Rails3 gem install rails (3)安装sqlite3 gem install sqlite3-ruby 安装...
NULL 博文链接:https://like-eagle.iteye.com/blog/994634
Rails 4 Starter应用程序 这是一个基于以下技术堆栈的入门Web应用程序: Starter App可部署在。 演示: : Gemfile还包含一组用于性能,安全性和api构建的有用的gem ... 线程安全 我们假定此应用程序是线程安全的...
使用Docker开发Ruby on Rails的配置文件 docker-compose up 利润! 你得到什么 一线开发环境的设置和启动: docker-compose up 。 一个易于安装的依赖关系可在新计算机上进行编码:Docker。 (与使用Vagrant时的两...