Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы АД.docx
Скачиваний:
16
Добавлен:
19.12.2018
Размер:
516.23 Кб
Скачать

19 Управление транзакциями (не совсем!!!!!)

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

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

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

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

Управление параллельным доступом

В этом разделе рассматриваются проблемы, связанные с организацией параллельного доступа к данным, а также описаны способы, позволяющие решить связанные с этим проблемы. Вначале приведено рабочее определение функции управления параллельным доступом. Управление параллельным доступом. Процесс организации одновременного выполнения а базе данных различных операций доступа, гарантирующий предотвращение их влияния друг на друга. Важнейшей целью создания данных является организация параллельного доступа многих пользователей к общим данным, используемым ими совместно. Обеспечить параллельный доступ относительно несложно, если все пользователи будут только читать данные, помещенные в базу. В этом случае работа каждого из них не оказывает влияния на работу остальных пользователей. Но если два или несколько пользователей одновременно обращаются к базе данных и хотя бы один из них желает обновить хранимую в базе информацию, возможно взаимное влияние процессов доступа, способное привести к несогласованности данных. Данная задача подобна задачам, стоящим перед любой многопользовательской компьютерной системой, когда несколько программ (или транзакций) получают возможность одновременно выполнять операции благодаря использованию мультипрограммной организации работы, позволяющей двум или нескольким программам (или транзакциям) выполняться в одно и то же время. Например, многие системы включают подсистему ввода-вывода, способную выполнять операции ввода-вывода, в то время как процессор осуществляет другие операции. Подобные системы позволяют двум или нескольким транзакциям выполняться одновременно. Система начинает выполнение первой транзакции и продолжает ее выполнение до первой операции ввода-вывода. На время выполнения этой операции система приостанавливает выполнение первой транзакции и переходит к выполнению команд второй транзакции. Когда второй транзакции понадобится выполнить операцию ввода-вывода, управление будет возвращено первой транзакции и ее выполнение будет продолжено с той точки, в которой она была приостановлена. Выполнение первой транзакции будет продолжено до достижения следующей операции ввода-вывода. Таким образом, выполнение операций двух транзакций чередуется и обеспечивается их параллельное выполнение. Кроме того, общая производительность системы (объем работы, выполняемой на протяжении заданного временного интервала) повышается, поскольку процессор выполняет команды другой транзакции, вместо того чтобы бесполезно простаивать, ожидая завершения запущенной операции ввода-вывода. Несмотря на то что каждая из транзакций может сама по себе выполняться вполне корректно, подобное чередование операций способно приводить к неверным результатам, из-за чего целостность и согласованность базы данных будут нарушены. Мы рассмотрим три примера потенциальных проблем, которые могут иметь место при параллельном выполнении транзакций: проблему потерянного обновления, проблему зависимости от незафиксированных результатов и проблему анализа несогласованности. Для иллюстрации указанных проблем мы воспользуемся отношением с данными о банковских счетах персонала компании DreamHome. В этом контексте будут рассматриваться транзакции, которые мы 1будем считать объектами управления параллельным выполнением.

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