Параллельные операции над БД. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Параллельные операции над БД.



До сих пор рассматривалась концепция БД, при которой предусматривается одновременное исполнение только одной программы, осуществляется доступ БД. На практике это чаще всего и требуется. Однако существует целый ряд приложений, когда одновременно (параллельно) исполнение нескольких программ или различных прогонов одной и той же программы (система продажи авиабилетов). Главная проблема состоит в том, что если не позаботиться о правилах, регулирующих доступ к БД 2-х или более программ, то не исключается возможность продажи билетов на одно и то же место двум пассажирам. Т.е. нельзя допускать параллельное исполнение 2-х процессов, которые читают и изменяют значение одного и того же объекта. Если осуществляется только чтение, то для экономии времени желательно в максимальной степени использовать параллельные запросы к БД.

Различают файл-сервер и клиент-сервер:

1) БД с распределённой обработкой, когда файлы БД находятся на сервере, а программы обработки на рабочих станциях;

2) Распределённые БД – файлы БД находятся как на сервере, так и на рабочей станции.

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

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

По способу доступа к данным БД разделяются на БД с локальным доступом и БД с удаленным сетевым доступом.

 

Основные понятия.

Транзакция – это разовый прогон программы. Одновременно возможно исполнение нескольких независимых прогонов одной и той же программы, и каждый из них является транзакцией.

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

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

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

READ A

A=A+1

WRITE A

 

 

  10 10 10 10 11 11
сч. А   сч. А А=А+1   А=А+1 зап. в БД   зап. в БД
Зн-е А в раб. обл.   10   10 11   11   11   W
Зн-е А в раб. обл.     10 10 11 11 W

В результате 2-х транзакций и значение возросло только на 1. Это представляет серьезную проблему, если – число мест, проданных на определенный рейс.

Решение проблемы состоит в обеспечении блокировки для .Перед тем, как прочитать элемент , транзакция должна его блокировать. Это:

1) предотвратит доступ другой транзакции к нему до тех пор, пока не завершит работу с ;

2) Если уже блокировано другой транзакцией, то для транзакции доступ к элементу невозможен до тех пор, пока с ним не завершится работа.

Существует 2 основных вида блокировки:

1) простая блокировка – не вводится различие блокировок для операции чтения или операции записи элемента .

Установить блокировку: LOCK X – предотвращает доступ к элементу X от других транзакций как по операции чтения, так и по операции записи до тех пор, пока этот элемент не будет разблокирован.

2) блокировка для чтения/записи.

В этой модели проводится различие между видами доступа к элементу :

- доступ только для чтения;

- доступ для чтения и записи.

Соответственно различают 2 типа команд блокировки:

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

RLOCK X (READ-LOCK X)

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

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

Пример: простая модель блокировки

:

LOCK A

READ A

A=A+1

WRITE A

UNLOCK A

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

 



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 188; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.183.1 (0.009 с.)