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

Упорядочиваемость и восстанавливаемость

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

Приведем несколько определений.

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

Каждая транзакция состоит из последовательности операций, включающих чтение и запись данных в базу, которые должны завершаться либо фиксацией, либо откатом полученных результатов. График S представляет собой последовательность операций, входящих в состав множества из n транзакций Т1, Т2, ..., Тn, на которую накладывается ограничение, требующее, чтобы последовательность операций каждой

из первоначальных транзакций сохранялась в графике. Поэтому для каждой транзакции Tі должен быть сохранен порядок ее операций в графике S.

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

В последовательном графике транзакции выполняются строго поочередно.

Например, если имеются две транзакции (Т1 и Т2), последовательный порядок выполнения транзакций может предусматривать применение транзакций Т1 затем Т2 (или Т2, затем T1). Таким образом, при последовательном выполнении никакое взаимовлияние транзакций невозможно, поскольку в каждый момент времени выполняется только одна из транзакций. Однако нет гарантии, что результаты применения всех вариантов последовательного выполнения заданного набора транзакций всегда будут одинаковы. Например, в случае банковских операций имеет значение, на какой именно остаток был начислен процент (т.е. до или после снятия большой суммы со счета).

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

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

Упорядочиваемый график непоследовательный график, который приводит к получению тех же результатов, которые достигаются при использовании некоторого варианта последовательного графика.

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

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

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

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

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