我发现mysql2 gem。它与ruby 1.9和utf8编码(与mysql gem相对)工作正常。
但是我有疑问。有人在生产中使用这种宝石吗?性能测试呢?它比mysql gem快吗?稳定吗?
mysql2旨在 替代 现有mysql宝石,该宝石已经过时了一段时间。我还听说笔者是不支持它了,而是建议大家用他的纯Ruby版本,因为它有更多的Ruby实现兼容(但 多 慢)。
mysql2
mysql
mysqlgem 的第一个问题是它在C中不进行任何类型转换,它为您提供了红宝石字符串,然后您必须将其转换为正确的红宝石类型。在纯红宝石中执行此操作非常慢,并且会在堆上创建最初不需要的对象。众所周知,Ruby的GC是它运行缓慢的主要原因。因此,最好避免使用它,并尽可能在纯C语言中执行更多操作。
其次,它在连接,发送查询和等待响应甚至关闭连接时会阻塞 整个 ruby VM。mysqlplus绝对可以解决此问题,但据我所知仅用于发送查询。
mysqlplus
mysql2旨在解决这些问题,同时保持API非常简单。Eric Wong(Unicorn的作者)贡献了一些很棒的补丁程序,这些补丁程序几乎使所有内容都不受阻塞,并且/或者在Ruby中发布了GVL。在Mysql2::Result类实现可枚举,所以如果你知道如何使用数组,你知道如何使用它。
Eric Wong
Mysql2::Result
我现在只知道有几个人在生产中使用它,但是它也在Twitter,WorkingPoint和UserVoice进行评估。
我也正在谈论Yehuda它是Rails 3出厂时的推荐/默认设置。它的一些技术和优化也将do_mysql很快被带入DataObjects的驱动程序中。
Yehuda
do_mysql
ActiveRecord驱动程序目前应该非常稳定。您需要做的就是安装gem,然后将database.yml中的适配器名称更改为mysql2。
如果您有兴趣使用它,请尝试一下。如果您发现任何问题,我会迅速进行修复;)