繁体   English   中英

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

[英]Ruby, Rails: mysql2 gem, does somebody use this gem? Is it stable?

我发现mysql2 gem 它与ruby 1.9和utf8编码(与mysql gem相对)工作正常。

但是我有疑问。 有人在生产中使用这种宝石吗? 性能测试呢? 它比mysql gem快吗? 稳定吗?

mysql2是对现有mysql gem的更现代的替代 ,而mysql gem已经过时了。 我还听说笔者是不支持它了,而是建议大家用他的纯Ruby版本,因为它有更多的Ruby实现兼容(但慢)。

mysql gem的第一个问题是它在C中不进行任何类型转换,它为您提供了红宝石字符串,然后您必须将其转换为正确的红宝石类型。 在纯红宝石中执行此操作非常慢,并且会在堆上创建最初不需要的对象。 众所周知,Ruby的GC是它运行缓慢的主要原因。 因此,最好避免使用它,并尽可能在纯C语言中执行更多操作。

其次,它在连接,发送查询和等待响应甚至关闭连接时会阻塞整个 ruby VM。 mysqlplus绝对可以解决此问题,但据我所知仅用于发送查询。

mysql2旨在解决这些问题,同时保持API非常简单。 Eric Wong (《独角兽》的作者)贡献了一些很棒的补丁程序,这些补丁程序几乎使所有内容都不阻塞和/或在Ruby中发布了GVL。 Mysql2::Result类实现Enumerable,因此,如果您知道如何使用数组,就知道如何使用它。

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

我还与Yehuda进行了对话,讨论它是Rails 3出厂时的推荐/默认设置。 它的一些技术和优化也将很快引入到DataObjects的do_mysql驱动程序中。

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

如果您有兴趣使用它,请尝试一下。 如果您发现任何问题,我会迅速进行修复;)

mysql2现在是Rails 3中的默认设置

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

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

确保按照以下答案将“ latin1”字符转换为“ utf8”:

Rails上的UTF8 MySQL问题-utf8_general_ci的编码问题

仅供参考,当在Rails 3.0.11中使用mysql2(0.2.x)时,我不得不将RubyGems的版本从1.8.15降级到1.8.10。 否则,乘客的...叫...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM