Jump to content

Оптимистическое управление параллелизмом

Оптимистическое управление параллелизмом ( OCC ), также известное как оптимистическая блокировка , представляет собой метод управления параллелизмом без блокировки, применяемый к транзакционным системам, таким как системы управления реляционными базами данных и программная транзакционная память . OCC предполагает, что несколько транзакций часто могут выполняться, не мешая друг другу. Во время работы транзакции используют ресурсы данных, не блокируя эти ресурсы. Перед фиксацией каждая транзакция проверяет, что никакая другая транзакция не изменила прочитанные ею данные. Если проверка выявляет конфликтующие изменения, фиксирующая транзакция откатывается и может быть перезапущена. [1] Оптимистическое управление параллелизмом было впервые предложено в 1979 году Х. Т. Кунгом и Джоном Т. Робинсоном. [2]

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

Фазы оптимистического управления параллелизмом

[ редактировать ]

Транзакции управления оптимистичным параллелизмом включают следующие этапы: [2]

  • Начало : Запишите временную метку, обозначающую начало транзакции.
  • Изменить : прочитать значения базы данных и предварительно записать изменения.
  • Проверка : проверьте, изменили ли другие транзакции данные, которые использовала эта транзакция (чтение или запись). Сюда входят транзакции, которые завершились после времени начала этой транзакции, и, при необходимости, транзакции, которые все еще активны во время проверки.
  • Фиксация/откат : если конфликта нет, все изменения вступят в силу. Если возник конфликт, разрешите его, обычно прервав транзакцию, хотя возможны и другие схемы разрешения. Необходимо проявлять осторожность, чтобы избежать ошибки времени проверки и времени использования , особенно если этот этап и предыдущий не выполняются как одна атомарная операция.

Использование Интернета

[ редактировать ]

Природа состояния HTTP без сохранения делает блокировку для пользовательских веб-интерфейсов невозможной. Обычно пользователь начинает редактировать запись, а затем уходит, не перейдя по ссылке «отмена» или «выход». Если используется блокировка, другие пользователи, пытающиеся редактировать ту же запись, должны дождаться истечения времени блокировки первого пользователя.

HTTP предоставляет форму встроенного OCC. Ответ на первоначальный запрос GET может включать ETag для последующих запросов PUT для использования в заголовке If-Match. Любые запросы PUT с устаревшим ETag в заголовке If-Match могут быть отклонены. [3]

Некоторые системы управления базами данных изначально предлагают OCC, не требуя специального прикладного кода. Для других приложение может реализовать уровень OCC вне базы данных и избежать ожидания или автоматической перезаписи записей. В таких случаях форма может включать скрытое поле с исходным содержимым записи, меткой времени, порядковым номером или непрозрачным токеном. При отправке это сравнивается с базой данных. Если оно отличается, вызывается алгоритм разрешения конфликтов.

См. также

[ редактировать ]
  1. ^ Джонсон, Рохит (2003). «Общие проблемы доступа к данным» . Экспертное индивидуальное проектирование и разработка J2EE . Врокс Пресс. ISBN  978-0-7645-4385-2 . Архивировано из оригинала 8 октября 2011 года.
  2. ^ Перейти обратно: а б HT Кунг, Дж. Т. Робинсон (1981). «Об оптимистических методах управления параллелизмом» (PDF) . Транзакции ACM в системах баз данных. Архивировано (PDF) из оригинала 31 августа 2019 г.
  3. ^ «Редактирование в Интернете: обнаружение проблемы с потерянным обновлением с помощью незарезервированного извлечения» . Примечание W3C . 10 мая 1999 г.
  4. ^ Справка:Редактировать конфликт.
  5. ^ «Bugzilla: Часто задаваемые вопросы: административные вопросы» . МозиллаВики . 11 апреля 2012 г.
  6. ^ «Модуль ActiveRecord::Locking» . Документация Rails Framework .
  7. ^ «Реляционное сопоставление объектов (GORM)» . Документация по платформе Grails . Архивировано из оригинала 15 августа 2014 г.
  8. ^ «Обработка транзакций» . Руководство программиста GT.M для UNIX Edition .
  9. ^ «Обработка конфликтов параллелизма» . Центр документации Entity Framework . 5 июля 2023 г.
  10. ^ «Параллелизм транзакций — оптимистическое управление параллелизмом» . Разработчики Mimer — Возможности . Проверено 22 декабря 2023 г.
  11. ^ «Хранилище данных» . Что такое Google App Engine? . 27 августа 2010 г.
  12. ^ «Обновление частей документов» . Проверено 28 июня 2018 г.
  13. ^ «Оптимистическое управление параллелизмом» . Эластичный . Проверено 5 февраля 2024 г.
  14. ^ «Технический обзор» . Документация Apache CouchDB . Проверено 6 февраля 2024 г.
  15. ^ «Транзакции — MonetDB» . 16 января 2013 г.
  16. ^ «Транзакции в Redis» .
  17. ^ «Работа с элементами и атрибутами — условная запись» . Проверено 2 ноября 2020 г.
  18. ^ «Обзор API — операции с ресурсами» . Проверено 3 ноября 2020 г. .
  19. ^ Югабайт, Команда. «Явная блокировка | Документы YugabyteDB» . docs.yugabyte.com . Проверено 4 января 2022 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 870cafa31fdc6b35bc69df5708ae7c17__1712323140
URL1:https://arc.ask3.ru/arc/aa/87/17/870cafa31fdc6b35bc69df5708ae7c17.html
Заголовок, (Title) документа по адресу, URL1:
Optimistic concurrency control - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)