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

18) Использование механизма кэширование изменений .

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

19) Журнализация изменений — функция СУБД, которая сохраняет информацию, необходимую для восстановления базы данных в предыдущее согласованное состояние в случае логических или физических отказов.

В простейшем случае журнализация изменений заключается в последовательной записи во внешнюю память всех изменений, выполняемых в базе данных. Записывается следующая информация:

  • порядковый номер, тип и время изменения;

  • идентификатор транзакции;

  • объект, подвергшийся изменению (номер хранимого файла и номер блока данных в нём, номер строки внутри блока);

  • предыдущее состояние объекта и новое состояние объекта.

Формируемая таким образом информация называется журнал изменений базы данных. Журнал содержит отметки начала и завершения транзакции, и отметки принятия контрольной точки

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

20) Параллельная обработка транзакций

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

Основные проблемы, которые возникают при параллельном выполнении транзакций, делятся условно на 4 типа:

  • Пропавшие изменения. Эта ситуация может возникать, если две транзакции одновременно изменяют одну и ту же запись в БД.

  • Проблемы промежуточных данных.

  • Проблемы несогласованных данных.

  • Проблемы строк-призраков (строк-фантомов). (первая транзакция не завершилась, а во второй уже произошли изменения).

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

Типы блокировок

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

  • Семафор самый простой тип блокировки. С точки зрения доступа к данным не делается никаких различий между режимами доступа: общим (только чтение) или эксклюзивным (чтение и запись). В режиме общего доступа несколько потоков могут запросить блокировку для доступа к данным в режиме только чтение. Также используется эксклюзивный режим доступа в алгоритмах обновления и удаления.

  • Типы блокировок различают по стратегии блокировки продолжения исполнения потока. В большинстве реализаций запрос блокировки препятствует дальнейшему исполнению потока пока не появится доступ к заблокированному ресурсу.

  • Спинлок это блокировка которая ожидает в цикле пока не появится доступ. Такая блокировка очень эффективна если поток ожидает блокировку незначительный интервал времени, это позволяет избежать избыточной перепланировки потоков.

  • Для эффективной реализации механизма блокировки требуется поддержка на аппаратном уровне. Аппаратная поддержка может быть реализована в виде одной или нескольких атомарных операциях таких как "test-and-set", "fetch-and-add" или "compare-and-swap". Такие инструкции позволяют без прерываний проверить, что блокировка свободна и если это так то занять блокировку.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]