Ruby,Rails:mysql2gem,有人使用这个gem? 它是稳定的吗?

我发现mysql2gem 。 它工作正常与Ruby 1.9和UTF8编码(而不是MySQL的gem)。

但是我有疑问。 有人在生产中使用这个gem? 性能testing呢? 比MySQL的gem更快吗? 它是稳定的吗?

mysql2的意思是更现代的替代现有的mysqlgem,现在已经过时了一段时间。 我还听说作者不再支持它,而是build议大家使用他的纯ruby版本,因为它与更多的Ruby实现兼容(但速度更慢)。

mysql gem的第一个问题是它不会在C中进行任何types的转换,它会返回rubystring,然后您必须将其转换为适当的rubytypes。 在纯ruby中这样做是非常缓慢的,并且创build堆中不需要首先存在的对象。 众所周知,Ruby的GC是缓慢的主要原因。 所以最好避免它,尽可能在纯C中做尽可能多的事情。

其次是在连接时阻塞整个 ruby虚拟机,发送查询并等待响应,甚至closures连接。 对于这个问题, mysqlplus肯定有帮助,但是我只知道发送查询。

mysql2旨在解决这些问题,同时保持API非常简单。 Eric Wong (Unicorn的作者)贡献了一些令人惊叹的补丁,几乎所有东西都是非阻塞的,或者在Ruby中释放GVL。 Mysql2::Result类实现Enumerable,所以如果你知道如何使用一个Array,你知道如何使用它。

我只知道有几个人正在使用它在生产中,但它正在评估在Twitter,工作点和UserVoice也。

我也正在和Yehuda谈谈它是在推出时默认的Rails 3。 它的一些技巧和优化也将很快被引入到DataObjects的do_mysql驱动程序中。

ActiveRecord驱动程序目前应该非常稳定。 所有你需要做的就是安装gem,并将你的适配器名称在database.yml中改为mysql2

如果你有兴趣使用它,试试看。 如果您发现任何问题,我很快就会推送修复程序;)

mysql2现在是rails 3中的默认值

有点晚了,但是我在几个站点上使用了mysql2,并且发现它非常稳定,因为连接closures的一些问题在几个星期前就已经解决了。

如果有人想在Rails 3.0.0 for Windows中使用mysql gem而不是mysql2 gem,我写了一篇短文,解释如何调整rails应用程序生成器 。

确保你把'latin1'字符转换为'utf8',按照这里的答案:

UTF8 MySQL在Rails上的问题 – utf8_general_ci的编码问题

仅供参考,在使用mysql2(0.2.x)和Rails 3.0.11时,我必须将我的RubyGems版本从1.8.15降级到1.8.10。 否则乘客酒吧…