mysql2
se veut plus moderne de remplacement de l'existante mysql
gem, qui a été rassis pour un certain temps maintenant. J'ai aussi entendu dire que l'auteur n'est pas de soutenir plus et recommande plutôt l'usage de tous ses pur-version de ruby depuis qu'il est compatible avec plus de Rubis implémentations (mais est beaucoup plus lent).
Le premier problème avec l' mysql
gem est il ne fait pas de conversion de type C, il vous donne en ruby chaînes que vous pouvez ensuite convertir en ruby types. Le faire dans le plus pur rubis est extrêmement lente, et crée des objets sur le tas qui n'aurait jamais dû existants, en premier lieu. Et comme nous le savons tous, Ruby GC est la principale raison pour laquelle c'est la lenteur. Il est donc préférable de l'éviter et de faire autant de dans le plus pur C que vous le pouvez.
La deuxième est que, il bloque l' ensemble de ruby VM lors de la connexion, l'envoi des requêtes et d'attente pour les réponses, et même la fermeture de la connexion. mysqlplus
aide vraiment à cette question, mais uniquement pour l'envoi des requêtes pour autant que je sais.
mysql2
vise à résoudre ces problèmes tout en gardant l'API très simple. Eric Wong
(auteur de la Licorne), a contribué à de fantastiques patchs qui font presque tout le non-blocage et/ou de la libération de la GVL en Ruby. L' Mysql2::Result
classe implémente Énumérable si vous savez comment utiliser un Tableau, vous savez comment l'utiliser.
Je ne suis au courant de quelques personnes qui l'utilisent dans la production dès maintenant, mais il est évalué à Twitter, WorkingPoint et UserVoice trop.
Je suis également en pourparlers avec Yehuda
sur le recommandé/par défaut pour Rails 3 lors de navires. Certaines de ses techniques et optimisations vont également être mis en DataObjects' do_mysql
pilote bientôt.
Le ActiveRecord pilote doit être assez solide en ce moment. Tous vous avez besoin de faire est d'avoir la gemme installé, et de changer votre nom de la carte dans la base de données.yml pour mysql2
.
Si vous êtes intéressés à l'utiliser, lui donner un essai. Je suis rapide pour pousser les correctifs si vous trouvez des problèmes ;)