sql >> Databáze >  >> RDS >> Mysql

Ruby, Rails:drahokam mysql2, používá někdo tento drahokam? Je to stabilní?

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;)



  1. Zobrazit (seznam) databáze MySQL v systému Linux pomocí příkazového řádku

  2. mysql tinyint(1) vs tinyint(2) vs tinyint(3) vs tinyint(4)

  3. Příklad Spring Boot CRUD s MySQL

  4. Jak vybrat více než 1 záznam za den?