mysql2
je myšleno jako modernější náhrada pro existující mysql
drahokam, který je už nějakou dobu zatuchlý. Také jsem slyšel, že to autor již nepodporuje a místo toho všem doporučuje používat jeho čistě rubínovou verzi, protože je kompatibilní s více implementacemi Ruby (ale je hodně pomalejší).
První problém s mysql
klenotem je, že neprovádí žádné odlévání typu v C, vrací vám rubínové struny, které pak musíte převést na správné rubínové typy. Dělat to v čistém ruby je extrémně pomalé a vytváří na hromadě objekty, které vůbec nepotřebovaly existovat. A jak všichni víme, Rubyho GC je hlavním důvodem jeho pomalosti. Takže je nejlepší se tomu vyhnout a udělat co nejvíc v čistém C.
Za druhé, že blokuje celé ruby VM při připojování, odesílání dotazů a čekání na odpovědi a dokonce i při uzavírání připojení. mysqlplus
rozhodně pomáhá s tímto problémem, ale pouze pro zasílání dotazů, pokud vím.
mysql2
si klade za cíl tyto problémy vyřešit a přitom zachovat API extrémně jednoduché. Eric Wong
(autor Unicorn) přispěl několika úžasnými záplatami, díky nimž je téměř vše neblokující a/nebo uvolňují GVL v Ruby. Mysql2::Result
class implementuje Enumerable, takže pokud víte, jak používat pole, víte, jak ho používat.
Vím jen o několika lidech, kteří jej v současné době používají v produkci, ale je také hodnocen na Twitteru, WorkingPointu a UserVoice.
Také jednám s Yehuda
o tom, že je doporučeno/výchozí pro Rails 3, když se dodává. Některé z jeho technik a optimalizací budou také přeneseny do do_mysql
DataObjects brzy také ovladač.
Ovladač ActiveRecord by měl být v tuto chvíli docela solidní. Vše, co byste měli udělat, je mít nainstalovaný drahokam a změnit název adaptéru v database.yml na mysql2
.
Pokud máte zájem o jeho použití, vyzkoušejte to. Pokud narazíte na nějaké problémy, rychle podám opravy;)