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

He encontrado mysql2 gem . Funciona bien con la encoding ruby ​​1.9 y utf8 (a diferencia de mysql gem).

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

mysql2 está pensado como un reemplazo más moderno para la gem mysql existente, que ha estado obsoleta por un tiempo. También escuché que el autor ya no lo respalda y en su lugar recomienda que todos usen su versión de Ruby puro, ya que es compatible con más implementaciones de Ruby (pero es mucho más lento).

El primer problema con la gem mysql es que no hace ningún tipo de lanzamiento en C, sino que te devuelve cuerdas de Ruby que luego debes convertir en tipos de Rubyes adecuados. Hacer eso en pure-ruby es extremadamente lento, y crea objetos en el montón que nunca fue necesario para existir en primer lugar. Y como todos sabemos, el GC de Ruby es la razón principal de su lentitud. Así que es mejor evitarlo y hacer todo lo que puedas en C pura.

La segunda es que bloquea toda la máquina virtual 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 sé.

mysql2 pretende resolver estos problemas manteniendo 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 la GVL en Ruby. La clase Mysql2::Result implementa Enumerable, así que si sabes cómo usar un Array, sabes cómo usarlo.

Solo soy consciente de que algunas personas lo usan en producción en este momento, pero también se está evaluando en Twitter, WorkingPoint y UserVoice.

También estoy en conversaciones con Yehuda acerca de que es el valor predeterminado / recomendado para Rails 3 cuando se envía. Algunas de sus técnicas y optimizaciones también se incorporarán pronto al 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 gem instalada y cambiar el nombre de su adaptador en database.yml a mysql2 .

Si está interesado en usarlo, inténtelo. Soy rápido para hacer arreglos si encuentra algún problema;)

mysql2 es ahora el predeterminado en los Rails 3

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 el cierre de las conexiones se resolvieron hace unas semanas.

Si alguien quiere usar la gem mysql en lugar de la gem mysql2 en Rails 3.0.0 para Windows, escribí un breve artículo que explica cómo ajustar el generador de aplicaciones de Rails .

Asegúrese de convertir sus caracteres ‘latin1’ a ‘utf8’, siguiendo la respuesta aquí:

Problemas de MySQL UTF8 en Rails – problemas de encoding con utf8_general_ci

Para su información, al usar mysql2 (0.2.x) con Rails 3.0.11 tuve que degradar mi versión de RubyGems de 1.8.15 a 1.8.10. De lo contrario, los pasajeros de barfs …