Когда использовать пессимистический параллелизм? - PullRequest
0 голосов
/ 11 сентября 2009

Каковы конкретные сценарии, где используется пессимистический параллелизм?

Ответы [ 3 ]

1 голос
/ 12 сентября 2009

Пессимистический параллелизм, вероятно, следует использовать в ситуациях, когда попытки одновременного редактирования происходят часто, а не в исключительных случаях. Оптимистичный параллелизм может привести к неожиданным результатам для пользователей, когда им сообщают, что их изменения не будут сохранены, поэтому его следует избегать, когда это происходит в обычном режиме.

0 голосов
/ 11 сентября 2009

Что именно вы подразумеваете под «когда использовать блокировку pess.»?

Если вы имеете дело с данными, управляемыми СУБД, у вас нет выбора. СУБД использует его при каждом обновлении, полной остановке, потому что сама СУБД также не имеет возможности, если она хочет обеспечить целостность данных.

Даже системы на основе MVCC (такие как Oracle?) Не имеют другого выбора, кроме как сериализовать действия с использованием 2-фазной блокировки, чтобы правильно обрабатывать такие случаи, как:

TX A запускается, TX B запускается; TX A вставляет ID 1; TX B вставляет ID 1; TX A проверяет ограничения; TX B проверяет ограничения; TX A совершает; TX B фиксирует.

Если при проверке ограничений A / B было разрешено игнорировать вставку того же идентификатора, что и B / A, база данных в итоге нарушит ключ.

Блокировки, управляемые приложением, должны быть пессимистичными, только если вы можете быть уверены, что они не останутся в ожидании, пока пользователь ожидает ввода какого-либо ввода или около того (или когда выполняется какое-либо действие, которое потенциально может вызвать длительные задержки). ). Но это ответ на противоположный вопрос, «когда НЕ использовать».

EDIT

Индикатор «Когда его использовать» может указывать на то, что в ситуациях с высокой конкуренцией требуется «быстрый отказ» для любой транзакции, которая «идет второй». Это гарантирует, что транзакции, которые не могут быть завершены, не будут занимать слишком много ресурсов, и эти ресурсы будут доступны для более быстрого завершения (и, следовательно, более быстрого снятия блокировки) любой транзакции, которая «пришла первой» и получила блокировку. Однако осознайте, что вы также увеличиваете свои шансы попасть в тупики, и, поскольку блокировки контролируются приложением, вы должны разрешить любой тупик.

0 голосов
/ 11 сентября 2009

Да, конечно, когда абсолютно невозможно, чтобы два человека одновременно изменяли одну и ту же запись. Банки делают это больше всего.

...