sql >> Database teknologi >  >> RDS >> Mysql

Ruby, Rails:mysql2 perle, bruger nogen denne perle? Er den stabil?

mysql2 er ment som en mere moderne erstatning for den eksisterende mysql perle, som har været forældet i et stykke tid nu. Jeg har også hørt, at forfatteren ikke støtter det længere og i stedet anbefaler alle at bruge hans ren-ruby-version, da den er kompatibel med flere Ruby-implementeringer (men er meget langsommere).

Det første problem med mysql perle er, at den ikke laver nogen form for støbning i C, den giver dig rubinstrenge tilbage, som du så skal konvertere til ordentlige rubintyper. At gøre det i ren rubin er ekstremt langsomt og skaber objekter på dyngen, som aldrig behøvede at eksistere i første omgang. Og som vi alle ved, er Ruby's GC den primære årsag til dens langsomhed. Så det er bedst at undgå det og gøre så meget i ren C, som du kan.

For det andet er, at det blokerer hele ruby VM, mens du opretter forbindelse, sender forespørgsler og venter på svar og endda lukker forbindelsen. mysqlplus hjælper bestemt med dette problem, men kun til at sende forespørgsler, så vidt jeg ved.

mysql2 har til formål at løse disse problemer og samtidig holde API'en ekstremt enkel. Eric Wong (forfatter af Unicorn) har bidraget med nogle fantastiske patches, der gør næsten alt ikke-blokerende og/eller frigiver GVL i Ruby. Mysql2::Result klasse implementerer Enumerable, så hvis du ved, hvordan du bruger et array, ved du, hvordan du bruger det.

Jeg kender kun få personer, der bruger det i produktionen lige nu, men det bliver også evalueret på Twitter, WorkingPoint og UserVoice.

Jeg er også i samtaler med Yehuda om, at det er anbefalet/standard for Rails 3, når det afsendes. Nogle af dens teknikker og optimeringer vil også blive bragt ind i DataObjects' do_mysql driver snart også.

ActiveRecord-driveren burde være ret solid i øjeblikket. Alt du skal gøre er at have ædelstenen installeret og ændre dit adapternavn i database.yml til mysql2 .

Hvis du er interesseret i at bruge det, så prøv det. Jeg er hurtig til at skubbe rettelser, hvis du finder nogen problemer;)



  1. Hvordan Atand() virker i PostgreSQL

  2. mysql:hvordan gemmer man ORDER BY efter LEFT JOIN uden genbestilling?

  3. Hurtigste måde at indlæse numeriske data i python/pandas/numpy array fra MySQL

  4. MySQL Operationsrækkefølge?