Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовые ответы.docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
2.21 Mб
Скачать

Проблемы параллельного доступа с использованием транзакций

При параллельном выполнении транзакций возможны следующие проблемы:

  • потерянное обновление (англ. lost update) — при одновременном изменении одного блока данных разными транзакциями, одно из изменений теряется;

  • «грязное» чтение (англ. dirty read) — чтение данных, добавленных или изменённых транзакцией, которая впоследствии не подтвердится (откатится);

  • неповторяющееся чтение (англ. non-repeatable read) — при повторном чтении в рамках одной транзакции, ранее прочитанные данные оказываются изменёнными или удалёнными;

  • фантомное чтение (англ. phantom reads) — при повторном чтении в рамках одной транзакции прочитаны данные(новые "фантомные" строки), которых при предыдущих чтениях не было, хотя они удовлетворяли условиям отбора предыдущего чтения.

  1. Блокировки.

  • Блокиривка на уровне Базы Данных осуществляется присвоением свойству exclusive, при открытии БД, значения true. При использовании вами элемента управления data, в его свойствах установите exclusive = true . Если же вы используете объект dao, то при присвоении значения объекту db установите в true значение второго параметра метода opendatabase:

  • set db = dbengine.opendatabase(“c:biblio.mdb”, true)

  • Когда База Данных заблокирована таким образом, тодругие пользователи не смогут ее открыть. При попытке обращения к заблокированной Базе Данных вы получите сообщение:

  • “couldn’t use ‘c:biblio.mdb’; file already in use.”