Um ein besseres Verständnis der Pessimist Verriegelung (mit InnoDB) zu bekommen, habe ich versucht, diesen Code in meine Rails-Anwendung auszuführen:Testing pessimistische Sperre mit Rails
Thread.new do
Account.transaction do
account = Account.lock(true).first
account.balance += 250
account.save!
end
end
Thread.new do
Account.transaction do
account = Account.lock(true).first
account.balance += 500
account.save!
end
end
Es funktioniert tatsächlich, account.balance
enthält dann 750
, dann 1500
beim nächsten Treffer. Ohne Verriegelung wird nur der letzte Thread berücksichtigt und das Ergebnis ist 500
.
Ist das ein dummer Test, um den Unterschied zwischen Locking oder nicht zu testen? I denke, Ich verstehe das Prinzip der Pessimist Verriegelung, aber nicht sicher, obwohl.