Чтобы получить лучшее понимание пессимиста замок (с InnoDB), я попытался запустить этот код в моем приложении Rails:Тестирование пессимистического замка с 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
Это на самом деле работает, account.balance
затем содержит 750
, то 1500
на следующий хит. Без блокировки он учитывает последний поток, и результат 500
.
Это тупой тест, чтобы попробовать разницу между блокировкой или нет? I думаю Я понимаю принцип пессимистской блокировки, но не уверен, хотя.