装了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
- 浏览 1729
- 评论(6)
- 论坛回复 / 浏览 (6 / 4525)
- 查看更多
相关推荐
rails-hackernews-reddit-producthunt-clone, 黑客 news/reddit/social 链接分享网站 用 Rails 构建 Rails 上的 Reddit-Hackernews-ProductHunt克隆演示 这是一个 readme.md的Ruby on Rails 应用程序,模仿了 Hacker...
使用路径遍历(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....
在Ruby应用程序中经常需要连接MySQL数据库,因此需要安装MySQL的Ruby驱动: 1. 下载MySQL Ruby驱动: - **下载地址**:http://www.tmtm.org/en/mysql/ruby/ - **安装包**:mysql-ruby-2.7.4.tar.gz 2. 解压并安装...
### Ubuntu 11.04下Ruby on Rails与MySQL数据库集成指南 #### 一、安装与配置MySQL数据库 在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行...
### Ruby的手动编译安装与升级方法 #### 引言 Ruby是一种动态、面向对象的脚本语言,常被用于Web开发。对于开发者而言,掌握Ruby的安装与配置至关重要。Ubuntu用户通常会依赖于包管理工具`apt-get`来安装Ruby,...
– 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
### Ruby on Rails与MySQL安装详解 #### 环境配置概览 本文将详细介绍如何在Ubuntu 10.10上从源代码编译安装Ruby 1.8.7、Rails 2.3.5以及MySQL 5.1,旨在为开发者提供一个稳定且高效的开发环境。对于初次接触这些...
Ruby 和 Rails 是两种非常重要的 IT 技术,它们在软件开发领域中占据着重要的地位。Ruby 是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。Rails,全称为 Ruby on Rails,是...
总的来说,配置Ruby on Rails的数据库涉及到安装必要的数据库驱动和Rails框架,然后在`database.yml`文件中正确设定数据库连接参数。理解这个过程对于开发基于Rails的应用程序至关重要,因为这使得Rails能够与各种...
然而,有时在尝试连接Rails应用到MySQL数据库时,可能会遇到一些问题。本篇文章将深入探讨这些常见问题及其解决方案。 首先,Rails与MySQL的连接问题可能源于配置不正确。在`config/database.yml`文件中,你需要...
Ruby on Rails 安装及 MySQL 数据库配置指南 本文详细介绍了 Ruby on Rails 的安装步骤,以及 MySQL 数据库的配置方法,并提供了一些官方阅读资源。 一、Ruby on Rails 安装 Ruby on Rails 的安装可以分为以下几...
这个库的设计目标是提供比其他同类库更高的性能和更简单的API,使其成为Ruby开发者在处理MySQL数据库时的首选工具。 在Ruby社区,mysql2库被视为一个现代的解决方案,因为它不仅支持最新版本的MySQL服务器,还提供...
../installdir/ruby/bin/rake db:migrate RAILS_ENV=production ``` #### 四、常见问题及解决方案 在升级过程中可能会遇到一些问题,以下是一些常见的错误及其解决方法: 1. **缺少必要的gem**: - 如果遇到...
Ruby on Rails 2.0.2 默认使用的数据库是 SQLite3。因此,你需要安装 SQLite3 的驱动。运行 `gem install sqlite3-ruby` 来安装最新的 mswin 版本。随后,从 SQLite 官方网站(http://www.sqlite.org)下载 sqlite3....
本文将详细介绍如何在Mac系统上搭建一个完整的Rails开发环境,包括Ruby环境配置、Rails框架安装、MySQL数据库安装以及RubyMine集成开发环境的配置等关键步骤。 #### 二、Ruby环境配置 由于Mac系统自带Ruby环境,...
解决 Rails bundle 安装不上 mysql gem包的问题 环境 ubuntu 12.04 ruby-2.1.1 首先 新建一个的一个项目,在该项目上执行 bundle install 提示 代码如下: … Make sure that gem install mysql2 -v ‘0.3.16’; ...
在开发基于Web的应用程序时,Ruby on Rails(简称Rails)框架和MySQL数据库的结合是常见的选择。本文将详细介绍如何在Windows环境下配置Ruby on Rails以支持Rails 2.3.5及以上版本,并与MySQL进行无缝对接。 首先,...
rails-dev-box, 面向 Ruby on Rails 核心开发的虚拟机 用于 Ruby on Rails 核心开发的虚拟机简介注意:这个虚拟机不是为 Rails 应用程序开发而设计的,只是为。 这个项目自动设置开发环境,以便在 Ruby on Rails ...