mysql2
se entiende como un sistema más moderno reemplazo para el mysql
joya existente, que ha sido viciado por un tiempo ahora. 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 más lento).
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í adecuados. 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 el entero 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 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 sabe cómo usar una matriz, ya sabe cómo usarla.
Solo estoy al tanto de que algunas personas lo están utilizando ahora mismo en producción, 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 incluirán pronto en el controlador do_mysql
de DataObjects.
El controlador ActiveRecord debería ser bastante sólido por el momento. Todo lo que debe hacer es tener la gema instalada y cambiar el nombre de su adaptador en database.yml al mysql2
.
Si le interesa usarlo, pruébelo. Soy rápido para aplicar correcciones si encuentra algún problema;)
Gracias por la respuesta completa! ¡Intentaré utilizar la gema mysql2 en producción! Suena muy bonito. :) P.S. He encontrado un problema: http://github.com/brianmario/mysql2/issues#issue/25. Se trata de un proyecto de rake db: drop in rails3 :) – petRUShka
¿Podría publicar cómo fue su experiencia? ¿Funcionó como reemplazo de reemplazo? ¿Algún problema de rendimiento/estabilidad? –