Учебники

8) Управление параллелизмом СУБД

Что такое контроль параллелизма?

Контроль параллелизма — это процедура в СУБД для управления одновременными операциями, не конфликтуя друг с другом. Параллельный доступ довольно прост, если все пользователи просто читают данные. Они никак не могут мешать друг другу. Хотя для любой практической базы данных, будет иметь сочетание операций чтения и записи, и, следовательно, параллелизм является проблемой.

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

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

В этом уроке вы узнаете

Потенциальные проблемы параллелизма

Вот некоторые проблемы, с которыми вы, вероятно, столкнетесь при использовании метода управления параллелизмом:

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

Зачем использовать метод параллелизма?

Причины использования метода управления параллелизмом — СУБД:

  • Применять Изоляцию через взаимное исключение между конфликтующими транзакциями.
  • Решить проблемы конфликта чтения-записи и записи-записи
  • Чтобы сохранить согласованность базы данных через постоянное сохранение препятствий для выполнения
  • Система должна контролировать взаимодействие между параллельными транзакциями. Это управление достигается с помощью схем параллельного управления.
  • Контроль параллелизма помогает обеспечить сериализуемость

пример

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

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

Протоколы управления параллелизмом

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

  • Протоколы на основе блокировки
  • Две фазы
  • Протоколы на основе меток времени
  • Протоколы на основе валидации

Протоколы на основе блокировки

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

Все запросы на блокировку отправляются диспетчеру управления параллелизмом. Транзакции продолжаются только после получения запроса на блокировку.

Двоичные блокировки. Двоичная блокировка элемента данных может быть заблокирована или разблокирована.

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

1. Общий замок (S):

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

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

2. Эксклюзивный замок (X):

С эксклюзивной блокировкой элемент данных может быть прочитан, а также записан. Это эксклюзивно и не может быть проведено одновременно для одного и того же элемента данных. X-блокировка запрашивается с помощью инструкции lock-x. Транзакции могут разблокировать элемент данных после завершения операции записи.

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

3. Упрощенный протокол блокировки

Этот тип протоколов на основе блокировок позволяет транзакциям получать блокировку для каждого объекта перед началом операции. Транзакции могут разблокировать элемент данных после завершения операции записи.

4. Предварительная заявка на блокировку

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

голодание

Голодание — это ситуация, когда транзакция должна ждать в течение неопределенного периода времени, чтобы получить блокировку.

Ниже приведены причины голода:

  • Когда схема ожидания для заблокированных элементов не управляется должным образом
  • В случае утечки ресурса
  • Одна и та же транзакция повторно выбирается в качестве жертвы

тупик

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

Протокол двухфазной блокировки (2PL)

Протокол двухфазной блокировки, также известный как протокол 2PL. Это также называется P2L. В этом типе протокола блокировки транзакция должна получить блокировку после снятия одной из ее блокировок.

Этот протокол блокировки делит фазу выполнения транзакции на три разные части.

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

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

  • Фаза роста : на этом этапе транзакция может получить блокировки, но не может снять блокировки.
  • Этап сокращения : на этом этапе транзакция может снять блокировки, но не может получить новую блокировку

Это правда, что протокол 2PL предлагает сериализуемость. Однако это не гарантирует, что взаимоблокировки не произойдет.

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

Строгий двухфазный метод блокировки

Строгая двухфазная система блокировки практически аналогична 2PL. Разница лишь в том, что Strict-2PL никогда не снимает блокировку после ее использования. Он удерживает все блокировки до момента фиксации и снимает все блокировки за один раз после завершения процесса.

Централизованный 2PL

В Centralized 2 PL за управление блокировкой отвечает один сайт. Он имеет только один диспетчер блокировок для всей СУБД.

Основная копия 2PL

Первичный механизм копирования 2PL, многие менеджеры блокировок распределены по разным сайтам. После этого конкретный менеджер блокировок отвечает за управление блокировкой для набора элементов данных. Когда основная копия была обновлена, изменение распространяется на ведомые устройства.

Распределенный 2PL

В этом виде двухфазного механизма блокировки диспетчеры блокировки распространяются на все сайты. Они несут ответственность за управление блокировками данных на этом сайте. Если данные не реплицируются, это эквивалентно основной копии 2PL. Коммуникационные расходы Distributed 2PL значительно выше, чем у первичной копии 2PL

Протоколы на основе меток времени

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

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

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

Пример:

Suppose there are there transactions T1, T2, and T3. 
T1 has entered the system at time 0010 
T2 has entered the system at 0020
T3 has entered the system at 0030
Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.

Преимущества :

  • Расписания сериализуются так же, как протоколы 2PL
  • Не нужно ждать транзакции, что исключает возможность тупиков!

Недостатки:

Голод возможен, если одна и та же транзакция перезапускается и постоянно прерывается

Характеристики протокола хорошего параллелизма

Идеальный механизм СУБД для управления параллелизмом имеет следующие цели:

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

Резюме

  • Контроль параллелизма — это процедура в СУБД для управления одновременными операциями, не конфликтуя друг с другом.
  • Потерянные обновления, грязное чтение, неповторяющееся чтение и неправильная сводная информация — проблемы, с которыми сталкиваются из-за отсутствия контроля параллелизма.
  • Основанные на блокировке, двухфазные, на основе временных меток, на основе валидации являются типами протоколов обработки параллелизма
  • Замок может быть общим (S) или эксклюзивным (X)
  • Протокол двухфазной блокировки, который также известен как протокол 2PL, требует транзакции, должен получить блокировку после снятия одной из своих блокировок. Он имеет 2 фазы роста и сжатия.
  • Алгоритм на основе метки времени использует метку времени для сериализации выполнения параллельных транзакций. Протокол использует системное время или логический счетчик в качестве метки времени.