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

标签 mysql ruby-on-rails ruby

我找到了 mysql2 gem .它适用于 ruby​​ 1.9 和 utf8 编码(相对于 mysql gem)。

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

最佳答案

mysql2 旨在作为现有 mysql gem 的更现代的 替换,该 gem 已经过时了一段时间。我还听说作者不再支持它,而是建议大家使用他的纯 ruby​​ 版本,因为它与更多的 Ruby 实现兼容(但慢得多)。

mysql gem 的第一个问题是它不会在 C 中进行任何类型转换,它会返回 ruby​​ 字符串,然后您必须将其转换为正确的 ruby​​ 类型。在纯 ruby 中这样做非常慢,并且会在堆上创建从一开始就不需要存在的对象。众所周知,Ruby 的 GC 是其缓慢的主要原因。所以最好避免它并尽可能多地使用纯 C。

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

mysql2 旨在解决这些问题,同时保持 API 极其简单。 Eric Wong(Unicorn 的作者)贡献了一些很棒的补丁,使几乎所有东西都变成非阻塞和/或在 Ruby 中发布 GVL。 Mysql2::Result 类实现了 Enumerable,所以如果你知道如何使用 Array,你就知道如何使用它。

我只知道目前只有少数人在生产中使用它,但 Twitter、WorkingPoint 和 UserVoice 也在对其进行评估。

我也在与 Yehuda 讨论它是否是 Rails 3 的推荐/默认设置。它的一些技术和优化也将很快被引入 DataObjects 的 do_mysql 驱动程序中。

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

如果您有兴趣使用它,请尝试一下。如果您发现任何问题,我会尽快推送修复;)

关于mysql - Ruby, Rails : mysql2 gem, 有人使用这个 gem 吗?稳定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001243/

相关文章:

php - 插入到表中存在的列上

ruby-on-rails - 过期缓存片段不起作用

ruby - 使用 unpack 编写带有十六进制字符的字节数组?

ruby - 如何使用所需的 gem 分发 Ruby 应用程序

python - 想要显示图像

php - 检查值是否已存在不起作用(PHP)

php - MySQL 查询中带有日期的 UNIX_TIMESTAMP 不起作用

ruby-on-rails - haml rails 表单 - html 显示为原始而不是呈现为 html

ruby-on-rails - 如何在 Rails 中使用 jsonapi-resorces gem 实现嵌套资源?

ruby-on-rails - Ruby 或 Rails 是否有 "in multiples of"方法?