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

2 Параллелизм

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

3 Механизм транзакций

Информация БД в любой момент времени должна быть целостной и непротиворечивой. Одним из путей обеспечения этого является использование механизма транзакций.

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

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

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

Использование механизма транзакций необходимо:

- при выполнении последовательности взаимосвязанных операций с БД;

- при многопользовательском доступе к БД.

Транзакция может быть неявной или явной. Неявная транзакция стартует автоматически, а по завершении также автоматически подтверждается или отменяется. Явной транзакцией управляет программист с помощью компонентов Database, ADOConnection, TSQLConnection, IBTransaction (для технологий BDE, ADO, DBExpress и InterBase Express соответственно) и/или средств SQL. Часто в транзакцию объединяются операции над несколькими таблицами, когда производятся действия по внесению в разные таблицы взаимосвязанных изменений. Пусть осуществляется перенос записей из одной таблицы в другую. Если запись сначала удаляется из первой таблицы, а затем заносится во вторую таблицу, то при сбое, например, из-за перерыва в энергопитании компьютера, возможна ситуация, когда запись уже удалена из первой таблицы, но во вторую таблицу еще не попала. Если запись сначала заносится во вторую таблицу, а потом удаляется из первой таблицы, то при сбое возможна ситуация, когда запись будет находиться одновременно в двух таблицах. В обоих случаях имеет место нарушение целостности и непротиворечивости БД. Для предотвращения подобной ситуации операции удаления записи из одной таблицы и занесения ее в другую объединяются в одну транзакцию. Выполнение этой транзакции гарантирует, что при любом ее результате целостность БД нарушена не будет.

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