sql >> Database >  >> RDS >> Mysql

Ruby, Rails:mysql2 juweeltje, gebruikt iemand dit juweeltje? Is het stabiel?

mysql2 is bedoeld als een modernere vervanging voor de bestaande mysql juweeltje, dat al een tijdje oud is. Ik heb ook gehoord dat de auteur het niet meer ondersteunt en in plaats daarvan iedereen aanraadt om zijn pure ruby-versie te gebruiken, omdat het compatibel is met meer Ruby-implementaties (maar is veel langzamer).

Het eerste probleem met de mysql gem is dat het geen typecasting in C doet, het geeft je ruby-snaren terug die je vervolgens moet omzetten in de juiste ruby-types. Dat doen in pure ruby ​​is extreem traag en creëert objecten op de hoop die in de eerste plaats nooit nodig waren om te bestaan. En zoals we allemaal weten, is Ruby's GC de belangrijkste reden voor zijn traagheid. Het is dus het beste om het te vermijden en zoveel mogelijk in pure C te doen.

Ten tweede blokkeert het de gehele ruby VM tijdens het verbinden, het verzenden van vragen en het wachten op antwoorden, en zelfs het sluiten van de verbinding. mysqlplus helpt zeker met dit probleem, maar alleen voor het verzenden van vragen voor zover ik weet.

mysql2 heeft tot doel deze problemen op te lossen en tegelijkertijd de API uiterst eenvoudig te houden. Eric Wong (auteur van Unicorn) heeft een aantal geweldige patches bijgedragen die bijna alles niet-blokkerend maken en/of de GVL in Ruby vrijgeven. De Mysql2::Result class implementeert Enumerable, dus als u weet hoe u een array moet gebruiken, weet u ook hoe u deze moet gebruiken.

Ik ken maar een paar mensen die het momenteel in productie gebruiken, maar het wordt ook geëvalueerd op Twitter, WorkingPoint en UserVoice.

Ik ben ook in gesprek met Yehuda over het feit dat het de aanbevolen / standaard is voor Rails 3 wanneer het wordt verzonden. Sommige van zijn technieken en optimalisaties zullen ook worden opgenomen in DataObjects' do_mysql chauffeur binnenkort ook.

Het ActiveRecord-stuurprogramma zou op dit moment behoorlijk solide moeten zijn. Het enige wat u hoeft te doen is de gem te installeren en uw adapternaam in database.yml te wijzigen in mysql2 .

Als je geïnteresseerd bent om het te gebruiken, probeer het dan eens. Ik ben snel om oplossingen te pushen als je problemen vindt;)



  1. mySQL-fout:#1248 - Elke afgeleide tabel moet zijn eigen alias hebben

  2. Adaptive Server is niet beschikbaar of bestaat niet fout bij verbinding maken met SQL Server vanuit PHP

  3. Geaggregeerde functies gebruiken (SUM, AVG, MAX, MIN, COUNT, DISTINCT) in MySQL

  4. Navigeren door SQL Server-foutlogboeken