mysql2
está pensado como un reemplazo más moderno para el mysql
existente gema, que ha estado obsoleta por un tiempo ahora. También escuché que el autor ya no lo admite y, en cambio, 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 mysql
joya es que no hace ningún tipo de conversión en C, le devuelve cadenas de rubí que luego debe convertir en tipos de rubí adecuados. Hacer eso en pure-ruby es extremadamente lento y crea objetos en el montón que nunca necesitaron 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 puro.
La segunda es que bloquea el todo ruby VM 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 como objetivo resolver estos problemas manteniendo la API extremadamente simple. Eric Wong
(autor de Unicorn) ha contribuido con algunos parches increíbles que hacen que casi todo no bloquee y/o liberan la GVL en Ruby. El Mysql2::Result
La clase implementa Enumerable, por lo que si sabe cómo usar un Array, sabrá cómo usarlo.
Solo conozco a unas pocas personas que 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 recomendado/predeterminado para Rails 3 cuando se envía. Algunas de sus técnicas y optimizaciones también se incluirán en do_mysql
de DataObjects. conductor pronto también.
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 base de datos.yml a mysql2
.
Si estás interesado en usarlo, pruébalo. Me apresuro a enviar soluciones si encuentra algún problema;)