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

pet*_*hka 35 ruby mysql ruby-on-rails

我发现 mysql2 gem.它适用于ruby 1.9和utf8编码(与mysql gem相反).

但我怀疑.有人在生产中使用这个宝石吗?性能测试怎么样?它比mysql gem快吗?它稳定吗?

bri*_*rio 66

mysql2对现有的宝石来说,它是一种更现代的替代品mysql,现在已经陈旧了一段时间.我还听说作者不再支持它,而是建议每个人都使用他的纯ruby版本,因为它与更多Ruby实现兼容(但速度慢得多).

mysqlgem 的第一个问题是它不会在C中进行任何类型的转换,它会为你提供返回的ruby字符串,然后你必须转换成适当的ruby类型.在纯ruby中执行此操作非常慢,并且在堆上创建从不需要首先存在的对象.众所周知,Ruby的GC是它缓慢的主要原因.因此,最好避免它,尽可能多地使用纯C.

其次是它在连接,发送查询和等待响应,甚至关闭连接时阻塞整个 ruby VM.mysqlplus肯定有助于解决这个问题,但据我所知,仅用于发送查询.

mysql2旨在解决这些问题,同时保持API非常简单.Eric Wong(独角兽的作者)贡献了一些很棒的补丁,几乎所有东西都是非阻塞的和/或在Ruby中发布GVL.该Mysql2::Result所以如果你知道如何使用数组,你知道如何使用它类实现枚举.

我现在只知道有几个人在生产中使用它,但它也在Twitter,WorkingPoint和UserVoice上进行评估.

我也正在讨论Yehuda它在发布时是Rails 3的推荐/默认值.它的一些技术和优化也将do_mysql很快被带入DataObjects的驱动程序.

ActiveRecord驱动程序目前应该非常可靠.您需要做的就是安装gem,并将database.yml中的适配器名称更改为mysql2.

如果您对使用它感兴趣,请尝试一下.如果你发现任何问题,我会迅速推出补救措施;)


Lor*_*ren 11

mysql2现在是rails 3中的默认值


Nic*_*gaz 5

有点晚了 - 但是我在几个站点上使用mysql2进行生产,并且发现它非常稳定,因为几周前解决了关闭连接的一些问题.