Подтвердить что ты не робот

Ruby, Rails: mysql2 gem, кто-нибудь использует этот камень? Это стабильно?

Я нашел mysql2 gem. Он отлично работает с кодировкой ruby ​​1.9 и utf8 (в отличие от gem mysql).

Но у меня есть сомнения. Кто-нибудь использует этот камень в производстве? Как насчет теста производительности? Это быстрее, чем mysql gem? Устойчив?

4b9b3361

Ответ 1

mysql2 подразумевается как более современная замена существующего драгоценного камня mysql, который был устаревшим на некоторое время. Я также слышал, что автор больше не поддерживает его, и вместо этого рекомендует всем использовать свою версию с чистым рубином, поскольку он совместим с большим количеством реализаций Ruby (но намного медленнее).

Первая проблема с камнем mysql заключается в том, что он не выполняет кастинг типов в C, он возвращает вам рубиновые строки, которые затем вам нужно преобразовать в соответствующие типы рубинов. Выполнение этого в чистом рубине чрезвычайно медленное, и создает объекты на куче, которые никогда не нуждались в существовании в первую очередь. И, как мы все знаем, Ruby GC является основной причиной его медленности. Поэтому лучше всего избегать этого и делать как можно больше в чистом C.

Во-вторых, он блокирует всю рубиновую VM при подключении, отправке запросов и ожидании ответов и даже закрытии соединения. mysqlplus определенно помогает с этой проблемой, но только для отправки запросов, насколько мне известно.

mysql2 стремится решить эти проблемы, сохраняя API чрезвычайно простым. Eric Wong (автор Unicorn) внесла некоторые потрясающие исправления, которые делают почти все неблокирование и/или освобождение GVL в Ruby. Класс Mysql2::Result реализует Enumerable, поэтому, если вы знаете, как использовать Array, вы знаете, как его использовать.

Я знаю только о том, что некоторые люди используют его в производстве прямо сейчас, но он также оценивается в Twitter, WorkingPoint и UserVoice.

Я также беседую с Yehuda о том, что он рекомендуется/по умолчанию для Rails 3, когда он отправляется. Некоторые из его методов и оптимизаций также скоро будут внесены в драйвер DataObjects do_mysql.

В настоящий момент драйвер ActiveRecord должен быть довольно прочным. Все, что вам нужно сделать, это установить gem и изменить имя адаптера в файле database.yml на mysql2.

Если вы заинтересованы в его использовании, попробуйте. Я быстро удаляю исправления, если вы обнаружите какие-либо проблемы;)

Ответ 2

mysql2 теперь используется по умолчанию в rails 3

Ответ 3

Немного поздно, но я использую mysql2 в производстве на нескольких сайтах и ​​нашел его очень стабильным, так как некоторые проблемы с закрытием соединений были решены несколько недель назад.

Ответ 6

FYI. При использовании mysql2 (0.2.x) с Rails 3.0.11 мне пришлось понизить мою версию RubyGems с 1.8.15 до 1.8.10. В противном случае Пассажирские барьеры...