Ruby, направляющие: драгоценный камень mysql2, кто-то использует этот драгоценный камень? Действительно ли это стабильно?

Я нашел mysql2 драгоценный камень. Это хорошо работает с рубиновыми 1.9 и кодированием utf8 (в противоположность mysql драгоценному камню).

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

35
задан petRUShka 8 June 2010 в 20:57
поделиться

2 ответа

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

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

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

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

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

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

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

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

66
ответ дан 27 November 2019 в 06:44
поделиться

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

5
ответ дан 27 November 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: