mysql2
より現代的な交換を意味します 既存のmysql
の場合 しばらくの間古くなっている宝石。また、作者はもうサポートしていないと聞きました。代わりに、より多くのRuby実装と互換性があるため、純粋なRubyバージョンを使用することをお勧めします(ただし、多くの 遅い)。
mysql
の最初の問題 gemは、Cで型キャストを行わないため、Ruby文字列を返し、適切なRuby型に変換する必要があります。純粋なルビーでそれを行うのは非常に遅く、そもそも存在する必要がなかったオブジェクトをヒープ上に作成します。そして、ご存知のように、RubyのGCは、速度が遅い主な理由です。したがって、それを避け、できるだけ純粋なCで多くのことを行うのが最善です。
2つ目は、全体をブロックすることです。 接続中、クエリの送信中、応答の待機中、さらには接続を閉じているときのrubyVM。 mysqlplus
間違いなくこの問題に役立ちますが、私が知る限り、クエリを送信する場合に限ります。
mysql2
APIを非常にシンプルに保ちながら、これらの問題を解決することを目的としています。 Eric Wong
(Unicornの作者)は、ほぼすべてを非ブロッキングにしたり、RubyでGVLをリリースしたりする素晴らしいパッチをいくつか提供しています。 Mysql2::Result
クラスはEnumerableを実装しているため、配列の使用方法を知っている場合は、その使用方法を知っています。
現在、本番環境で使用している人はごくわずかですが、Twitter、WorkingPoint、UserVoiceでも評価されています。
Yehuda
とも話し合っています 出荷時のRails3の推奨/デフォルトについて。その手法と最適化の一部は、DataObjectsのdo_mysql
にも組み込まれる予定です。 ドライバーもすぐに。
ActiveRecordドライバーは現時点ではかなり安定しているはずです。 gemをインストールし、database.ymlのアダプター名をmysql2
に変更するだけです。 。
使用に興味がある場合は、試してみてください。問題が見つかった場合は、すぐに修正をプッシュします;)