mysql2
dimaksudkan sebagai pengganti yang lebih modern untuk mysql
yang ada permata, yang telah basi untuk sementara waktu sekarang. Saya juga mendengar bahwa penulisnya tidak mendukungnya lagi dan malah menyarankan semua orang menggunakan versi Ruby murninya karena kompatibel dengan lebih banyak implementasi Ruby (tetapi banyak lebih lambat).
Masalah pertama dengan mysql
permata itu tidak melakukan casting tipe apa pun di C, itu memberi Anda kembali string Ruby yang kemudian harus Anda ubah menjadi tipe Ruby yang tepat. Melakukan itu di ruby murni sangat lambat, dan menciptakan objek di heap yang tidak pernah perlu ada di tempat pertama. Dan seperti yang kita semua tahu, GC Ruby adalah alasan utama kelambatannya. Jadi sebaiknya hindari dan lakukan sebanyak mungkin dalam C murni.
Kedua adalah memblokir seluruh ruby VM saat menghubungkan, mengirim pertanyaan dan menunggu tanggapan, dan bahkan menutup koneksi. mysqlplus
pasti membantu dengan masalah ini, tetapi hanya untuk mengirim pertanyaan sejauh yang saya tahu.
mysql2
bertujuan untuk memecahkan masalah ini sambil menjaga API tetap sederhana. Eric Wong
(penulis Unicorn) telah menyumbangkan beberapa tambalan luar biasa yang membuat hampir semuanya tidak memblokir dan/atau merilis GVL di Ruby. Mysql2::Result
class mengimplementasikan Enumerable jadi jika Anda tahu cara menggunakan Array, Anda tahu cara menggunakannya.
Saya hanya mengetahui beberapa orang yang menggunakannya dalam produksi sekarang, tetapi sedang dievaluasi di Twitter, WorkingPoint, dan UserVoice juga.
Saya juga sedang dalam pembicaraan dengan Yehuda
tentang itu menjadi yang direkomendasikan/default untuk Rails 3 saat dikirimkan. Beberapa teknik dan pengoptimalannya juga akan dibawa ke do_mysql
DataObjects pengemudi juga segera.
Driver ActiveRecord seharusnya cukup solid saat ini. Yang harus Anda lakukan adalah menginstal permata, dan mengubah nama adaptor Anda di database.yml menjadi mysql2
.
Jika Anda tertarik untuk menggunakannya, cobalah. Saya akan segera melakukan perbaikan jika Anda menemukan masalah;)