Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Управление параллельной обработкой в распределенных БД






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

Решения по организации управления параллельным выпол­нением в распределенной среде основаны на подходах с ис­пользованием механизмов блокировок и временных отметок:

• механизм блокировки создает такие условия, что график параллельного выполнения транзакций будет эквивалентен некоторому (но, в общем случае, непредсказуемому) вари­анту последовательного выполнения этих транзакций;

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

Механизм блокировки реализуется в виде следующих прото­колов двухфазной блокировки (2PL — two-phase lock):

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

2. При двухфазной блокировке с первичными копия­ми функции диспетчера блокировок распределены по несколь­ким узлам. Каждый локальный диспетчер отвечает за управление блокировкой некоторого набора элементов данных. В процессе репликации для каждого копируемого элемента данных одна из копий выбирается в качестве первичной копии, а все остальные Рассматриваются как вторичные (зависимые).

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

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

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

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.