Пессимистический параллелизм включает блокировку строк в источнике данных, чтобы предотвратитьдругие пользователи могут изменять данные таким образом, чтобы это влияло на текущего пользователя.В пессимистической модели, когда пользователь выполняет действие, которое вызывает применение блокировки, другие пользователи не могут выполнять действия, которые будут конфликтовать с блокировкой, пока владелец блокировки не снимет ее.Эта модель в основном используется в средах, где существует серьезная конкуренция за данные, поэтому стоимость защиты данных с помощью блокировок меньше, чем стоимость отката транзакций при возникновении конфликтов параллелизма.
В отличие от пользователей, которые используют оптимистичный параллелизм не блокировать строку при ее чтении.Когда пользователь хочет обновить строку, приложение должно определить, изменил ли другой пользователь строку, так как она была прочитана.Оптимистичный параллелизм обычно используется в средах с низким уровнем конкуренции за данные.Оптимистичный параллелизм повышает производительность, поскольку блокировка записей не требуется, а блокировка записей требует дополнительных ресурсов сервера.Кроме того, для обеспечения блокировки записей необходимо постоянное соединение с сервером базы данных.Поскольку в модели оптимистичного параллелизма это не так, соединения с сервером могут бесплатно обслуживать большее количество клиентов за меньшее время.
В модели оптимистичного параллелизма нарушение считается совершенным, если:после того, как пользователь получает значение из базы данных, другой пользователь изменяет значение до того, как первый пользователь попытался изменить его.
Тестирование на нарушения оптимистичного параллелизма Существует несколько методов тестирования на нарушение оптимистичного параллелизма.Один включает в себя включение столбца отметки времени в таблицу.Базы данных обычно предоставляют функции отметок времени, которые можно использовать для определения даты и времени последнего обновления записи.Используя этот метод, столбец метки времени включается в определение таблицы.Всякий раз, когда запись обновляется, отметка времени обновляется, чтобы отразить текущую дату и время.В тесте на нарушения оптимистичного параллелизма столбец метки времени возвращается с любым запросом содержимого таблицы.При попытке обновления значение метки времени в базе данных сравнивается с исходным значением метки времени, содержащимся в измененной строке.Если они совпадают, выполняется обновление, и столбец метки времени обновляется с указанием текущего времени, чтобы отразить обновление.Если они не совпадают, произошло нарушение оптимистичного параллелизма.
Другой метод проверки нарушения оптимистичного параллелизма заключается в проверке того, что все исходные значения столбца в строке по-прежнему совпадают с найденными в базе данных .....