rails mysql ruby-on-rails ruby

Ruby, Rails: gema mysql2, ¿alguien usa esta gema? ¿Es estable?



gem mysql rails (6)

Encontré la gema mysql2 . Funciona bien con la codificación ruby ​​1.9 y utf8 (a diferencia de la gema mysql).

Pero tengo dudas. ¿Alguien usa esta gema en producción? ¿Qué hay de la prueba de rendimiento? ¿Es más rápido que la gema mysql? ¿Es estable?


FYI, Al usar mysql2 (0.2.x) con Rails 3.0.11 tuve que bajar de categoría mi versión de RubyGems de 1.8.15 a 1.8.10. De lo contrario pasajero barfs ...



Un poco tarde, pero estoy usando mysql2 en producción en un par de sitios, y lo he encontrado muy estable ya que algunos problemas con las conexiones cerradas se resolvieron hace unas semanas.


mysql2 ahora es el predeterminado en rieles 3


mysql2 se entiende como un reemplazo más moderno para la gema mysql existente, que ha estado obsoleta desde hace un tiempo. También escuché que el autor ya no lo soporta y recomienda que todos usen su versión de rubí puro, ya que es compatible con más implementaciones de Ruby (pero es mucho más lenta).

El primer problema con la gema mysql es que no hace ningún tipo de fundición en C, te devuelve cadenas de rubí que luego debes convertir en tipos de rubí apropiados. Hacer eso en puro rubí es extremadamente lento y crea objetos en el montón que nunca necesitaron existir en primer lugar. Y como todos sabemos, Ruby''s GC es la razón principal de su lentitud. Por lo tanto, es mejor evitarlo y hacer tanto C puro como sea posible.

En segundo lugar, bloquea toda la VM de Ruby mientras se conecta, envía consultas y espera respuestas, e incluso cierra la conexión. mysqlplus definitivamente ayuda con este problema, pero solo para enviar consultas hasta donde yo sé.

mysql2 tiene mysql2 objetivo resolver estos problemas mientras mantiene la API extremadamente simple. Eric Wong (autor de Unicorn) ha contribuido con algunos parches impresionantes que hacen que casi todo no bloquee y / o libere el GVL en Ruby. La clase Mysql2::Result implementa Enumerable, por lo que si sabes cómo usar una matriz, sabes cómo usarla.

Solo estoy al tanto de que algunas personas lo están utilizando en producción ahora mismo, pero también está siendo evaluado en Twitter, WorkingPoint y UserVoice.

También estoy en conversaciones con Yehuda sobre que es el recomendado / predeterminado para Rails 3 cuando se envía. Algunas de sus técnicas y optimizaciones también se do_mysql pronto en el controlador do_mysql de do_mysql .

El controlador ActiveRecord debería ser bastante sólido en este momento. Todo lo que debe hacer es tener la gema instalada y cambiar el nombre de su adaptador en database.yml a mysql2 .

Si estás interesado en usarlo, pruébalo. Soy rápido para aplicar correcciones si encuentra algún problema;)