Контрол на паралелността на СУБД: Timestamp & Lock-based Protocols

Какво е паралелен контрол?

Контрол на паралелността в Системата за управление на бази данни е процедура за управление на едновременни операции, без да противоречат помежду си. Той гарантира, че транзакциите с база данни се извършват едновременно и точно, за да се получат правилни резултати, без да се нарушава целостта на данните в съответната база данни.

Едновременният достъп е доста лесен, ако всички потребители само четат данни. Няма начин те да си пречат един на друг. Въпреки че за всяка практическа база данни, тя би имала комбинация от операции ЧЕТЕНЕ и ЗАПИСВАНЕ и следователно едновременността е предизвикателство.

DBMS Concurrency Control се използва за справяне с такива конфликти, които най-често възникват при многопотребителска система. Следователно Контролът на паралелността е най -важният елемент за правилното функциониране на система за управление на база данни, където две или повече транзакции на база данни се изпълняват едновременно, които изискват достъп до едни и същи данни.

В този урок ще научите

Потенциални проблеми на едновременността

Ето някои проблеми, с които вероятно ще се сблъскате, докато използвате метода за контрол на паралелността на СУБД:

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

Защо да използвате метода на едновременността?

Причини за използване на метода за контрол на паралелност е СУБД:

  • Прилагане на изолация чрез взаимно изключване между конфликтни транзакции
  • За разрешаване на конфликтни проблеми за четене и писане и писане
  • За да се запази последователността на базата данни чрез постоянно запазване на препятствията при изпълнение
  • Системата трябва да контролира взаимодействието между едновременните транзакции. Това управление се постига с помощта на схеми за едновременно управление.
  • Контролът на паралелност помага да се осигури сериализация

Пример

Да предположим, че двама души, които ходят по едно и също време на електронни павилиони, за да си купят билет за филм за един и същ филм и същото време на шоуто.

Обаче остава само едно място за филмовото шоу в този конкретен театър. Без контрол на паралелността в СУБД е възможно и двамата киномани да купят билет. Методът за контрол на паралелност обаче не позволява това да се случи. И двамата киномани все още имат достъп до информация, записана в базата данни за местата за филми. Но контролът за паралелност предоставя само билет на купувача, който първи е завършил процеса на транзакция.

Протоколи за контрол на паралелността

Различните протоколи за контрол на паралелност предлагат различни предимства между размера на разрешената паралелност и размера на наложените разходи. Следват техниките за контрол на паралелността в СУБД:

  • Заключващи протоколи
  • Двуфазен протокол за заключване
  • Протоколи, базирани на времева отметка
  • Протоколи, базирани на валидиране

Заключващи протоколи

Заключващи протоколи в СУБД е механизъм, при който транзакцията не може да чете или записва данните, докато не получи подходящо заключване. Протоколите, базирани на заключване, помагат за премахване на проблема с едновременността в СУБД за едновременни транзакции чрез заключване или изолиране на конкретна транзакция за един потребител.

Заключването е променлива от данни, която е свързана с елемент от данни. Това заключване означава, че операции, които могат да се извършват върху елемента от данни. Заключванията в СУБД помагат за синхронизиране на достъпа до елементите на базата данни чрез едновременни транзакции.

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

Двоични ключалки: Двоичното заключване на елемент от данни може да бъде заключено или отключено.

Споделено/изключително: Този тип заключващ механизъм разделя ключалките в СУБД въз основа на тяхното използване. Ако се получи заключване на елемент от данни за извършване на операция за запис, това се нарича изключително заключване.

1. Споделено заключване (S):

Споделеното заключване се нарича още заключване само за четене. Със споделеното заключване елементът от данни може да бъде споделен между транзакции. Това е така, защото никога няма да имате разрешение за актуализиране на данните за елемента с данни.

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

2. Изключително заключване (X):

С изключителното заключване елемент от данни може да се чете, както и пише. Това е изключително и не може да се държи едновременно на един и същ елемент от данни. X-lock се иска чрез инструкция lock-x. Транзакциите могат да отключат елемента с данни след приключване на операцията „запис“.

Например, когато транзакцията трябва да актуализира баланса на сметката на дадено лице. Можете да разрешите тази транзакция, като поставите X заключване върху нея. Следователно, когато втората транзакция иска да чете или пише, изключителното заключване предотвратява тази операция.

3. Прост протокол за заключване

Този тип протоколи, базирани на заключване, позволява на транзакциите да получат заключване на всеки обект преди започване на работа. Транзакциите могат да отключат елемента с данни след приключване на операцията „запис“.

4. Предварително заявяване на заключване

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

Глад

Гладът е ситуацията, когато транзакцията трябва да изчака неопределен период, за да придобие ключалка.

Следните са причините за глада:

  • При изчакване схемата за заключени елементи не се управлява правилно
  • В случай на изтичане на ресурси
  • Същата транзакция се избира многократно като жертва

Безизходица

Блокирането се отнася до конкретна ситуация, при която два или повече процеса чакат един друг да освободят ресурс или повече от два процеса чакат ресурса в кръгова верига.

Двуфазен протокол за заключване

Двуфазен протокол за заключване известен също като 2PL протокол е метод за контрол на паралелност в СУБД, който осигурява сериализация чрез прилагане на заключване към данните за транзакциите, което блокира други транзакции за едновременен достъп до същите данни. Двуфазният протокол за заключване помага за премахване на проблема с едновременността в СУБД.

Този протокол за заключване разделя фазата на изпълнение на транзакция на три различни части.

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

Протоколът за двуфазно заключване позволява на всяка транзакция да направи заявка за заключване или отключване в две стъпки:

  • Фаза на растеж : В тази фаза транзакцията може да получи ключалки, но може да не освободи никакви ключалки.
  • Фаза на свиване : В тази фаза транзакцията може да освободи ключалки, но да не получи нова ключалка

Вярно е, че 2PL протоколът предлага сериализуемост. Това обаче не гарантира, че няма да се стигне до задънена улица.

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

Строг двуфазен метод на заключване

Системата за строго двуфазно заключване е почти подобна на 2PL. Единствената разлика е, че Strict-2PL никога не освобождава заключване след използването му. Той задържа всички ключалки до точката на коммитиране и освобождава всички ключалки наведнъж, когато процесът приключи.

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

В Centralized 2 PL един процес отговаря за процеса на управление на заключването. Той има само един мениджър за заключване за цялата СУБД.

Първично копие 2PL

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

Разпределени 2PL

В този вид двуфазен заключващ механизъм, мениджърите на заключване се разпространяват до всички сайтове. Те са отговорни за управлението на ключалки за данни на този сайт. Ако няма репликирани данни, това е еквивалентно на първичното копие 2PL. Разходите за комуникация на Distributed 2PL са доста по -високи от 2PL на първото копие

Протоколи, базирани на времева отметка

Протокол, базиран на времева отметка в СУБД е алгоритъм, който използва системното време или логически брояч като времева марка за сериализиране на изпълнението на едновременни транзакции. Протоколът, базиран на Timestamp, гарантира, че всяка противоречива операция за четене и запис се изпълнява в ред с времеви маркировки.

При този метод винаги се дава приоритет на по -старата транзакция. Той използва системно време за определяне на времевия печат на транзакцията. Това е най -често използваният паралелен протокол.

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

Пример: | _+_ |

Предимства :

  • Графиците могат да се сериализират точно като 2PL протоколи
  • Няма изчакване за транзакцията, което елиминира възможността за блокиране!

Недостатъци:

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

Протокол, базиран на валидиране

Протокол, базиран на валидиране в СУБД, известен също като Оптимистична техника за контрол на паралелността е метод за избягване на едновременността в транзакциите. В този протокол се актуализират локалните копия на данните за транзакцията, а не самите данни, което води до по -малко смущения при изпълнение на транзакцията.

Протоколът, базиран на валидиране, се изпълнява на следните три фази:

  1. Прочетете фаза
  2. Фаза на валидиране
  3. Напишете фаза

Прочетете фаза

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

Фаза на валидиране

Във фазата на валидиране данните се проверяват, за да се гарантира, че няма нарушение на сериализацията, докато се прилагат актуализациите на транзакциите към базата данни.

Напишете фаза

Във фазата на запис актуализациите се прилагат към базата данни, ако валидирането е успешно, иначе; актуализациите не се прилагат и транзакцията се връща обратно.

Характеристики на протокола за добра паралелност

Идеалният механизъм за СУБД за контрол на паралелността има следните цели:

  • Трябва да е устойчив на грешки в сайта и комуникацията.
  • Тя позволява паралелно изпълнение на транзакции за постигане на максимална паралелност.
  • Неговите механизми за съхранение и изчислителни методи трябва да бъдат скромни, за да се сведат до минимум режийните разходи.
  • Той трябва да наложи някои ограничения върху структурата на атомните действия на транзакциите.

Резюме

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