Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ruby, Rails:mysql2 gem, alguém usa essa gem? É estável?


mysql2 é um substituto mais moderno para o mysql existente gem, que está obsoleta há algum tempo. Também ouvi dizer que o autor não está mais dando suporte a ele e, em vez disso, recomenda que todos usem sua versão de ruby ​​puro, pois é compatível com mais implementações de Ruby (mas é muito Mais devagar).

O primeiro problema com o mysql gem é que ele não faz nenhum tipo de conversão em C, ele retorna strings ruby ​​que você precisa converter em tipos ruby ​​apropriados. Fazer isso em pure-ruby é extremamente lento e cria objetos no heap que nunca precisaram existir em primeiro lugar. E como todos sabemos, o GC do Ruby é o principal motivo de sua lentidão. Portanto, é melhor evitá-lo e fazer o máximo possível em C puro.

A segunda é que ele bloqueia todo ruby VM durante a conexão, enviando consultas e aguardando respostas e até mesmo fechando a conexão. mysqlplus definitivamente ajuda com esse problema, mas apenas para enviar consultas até onde eu sei.

mysql2 visa resolver esses problemas mantendo a API extremamente simples. Eric Wong (autor de Unicorn) contribuiu com alguns patches incríveis que tornam quase tudo não bloqueante e/ou liberam a GVL em Ruby. O Mysql2::Result class implementa Enumerable, portanto, se você souber usar um Array, saberá como usá-lo.

Estou ciente de apenas algumas pessoas usando-o em produção no momento, mas também está sendo avaliado no Twitter, WorkingPoint e UserVoice.

Também estou conversando com Yehuda sobre ser o recomendado/padrão para Rails 3 quando for lançado. Algumas de suas técnicas e otimizações também serão trazidas para o do_mysql do DataObjects motorista em breve também.

O driver ActiveRecord deve ser bastante sólido no momento. Tudo o que você precisa fazer é ter a gem instalada e alterar o nome do seu adaptador em database.yml para mysql2 .

Se você estiver interessado em usá-lo, experimente. Sou rápido em enviar correções se você encontrar algum problema;)