Как известно, существуют две стратегии блокировки: Optimistic vs. Pessimistic lockingМожет ли быть тупик при использовании оптимистической блокировки?
Пессимистический замок, когда вы блокировки записи для эксклюзивного использования до тех пор, пока вы закончите с ним. Он имеет гораздо лучшую целостность, чем оптимистичная блокировка, но для того, чтобы избежать Deadlocks, вы должны быть осторожны с вашим дизайном .
Также knonw, что Optimistic Concurrency Control не то же самое, как Multi Version Concurrency Control (Oracle или MSSQL-Snapshot/MVCC-RC): Optimistic vs Multi Version Concurrency Control - Differences?
Но может возникнуть затор между двумя транзакциями при использовании OCC (Optimistic Concurrency Control) в обоих?
Можно ли сказать, что оптимистичная блокировка уменьшает вероятность тупика за счет уменьшения согласованности? И только если каждое обновление находится в отдельной транзакции, вероятность тупика равна 0%, но при этом минимальная согласованность.
Спасибо! Поэтому Oracle Database никогда не увеличивает количество блокировок. Эскалация блокировки значительно увеличивает вероятность блокировок. Означает ли это, что «тупик» - это еще одно отличие Оптимистического параллелизма от параллелизма с несколькими версиями? Но на данный момент, когда Оптимистический параллелизм при завершении - чтение-проверка-изменение строки, мы используем блокировку? Или это может быть только один замок за транзакцию в один момент, поэтому не может быть тупиком. – Alex
@Alex - Я не уверен, что я понимаю последующие действия. Чтобы обновить строку, вам нужно ее заблокировать. Разница между оптимистичной и пессимистической блокировкой заключается в том, пессимистично ли вы блокируете строку на случай, если вы ее обновите, или вы оптимистично ожидаете, пока не узнаете, что хотите ее обновить, чтобы получить блокировку. Вы можете написать приложение, каждое из которых выполнялось как отдельная транзакция.Это уменьшило бы тупики, но это было бы ужасно для согласованности данных. –
Да, спасибо, вот что я хотел знать. Можем ли мы сказать, что оптимистичная блокировка уменьшает вероятность тупика за счет уменьшения согласованности? И только если каждое обновление в отдельной транзакции, то вероятность тупика равна 0%, но с этим наименьшая согласованность. Используя определенный оптимистичный подход, мы можем достичь необходимого компромисса между тупиком и согласованностью. – Alex