2009-07-03 3 views
0

Ich habe eine ziemlich Vanilla Rails App mit wenig Verkehr derzeit, und alles scheint zu funktionieren OK.Muss ich mich in Rails über fehlgeschlagene Transaktionen Gedanken machen, wenn das gleiche Modell von zwei verschiedenen Mongrels aktualisiert wird?

Allerdings weiß ich nicht viel über die Schienen Internals und ich frage mich, was passiert in einer belebten Website, wenn zwei Anfragen zur gleichen Zeit kommen und versuchen, das gleiche Modell zu aktualisieren, von (ich nehme an) zwei separate Mongrel-Prozesse. Könnte dies zu einer fehlgeschlagenen Transaktionsausnahme oder ähnlichem führen, oder macht Rails Magie, um Controller-Methoden zu serialisieren?

Wenn ein Update fehlschlagen könnte, wie sollten Sie diese Situation am besten beobachten und behandeln?

Für mehr Hintergrund aktualisieren meine Controller-Methoden oft mehrere Modelle. Ich mache derzeit nichts besonderes, um Transaktionen zu erstellen und mich nur auf das Standardverhalten zu verlassen. Im Idealfall möchte ich, dass das Update wiederholt wird, anstatt einen Fehler zurückzugeben (die Updates sind im Allgemeinen idempotent, d. H., Dass sie zweimal durchgeführt werden müssen, wenn dies in Ordnung wäre). Meine Datenbank ist mysql.

Antwort

1

afaik, wartet mysql, bis die erste Transaktion verarbeitet wird und dann wird die zweite verarbeitet. #create, #update und #save holen ihre Sachen in eine SQL-Transaktion. Und ich denke, dass mysql mit denen gut umgehen kann.

Verwandte Themen