Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

10.1. Транзакции и целостность баз данных и ACID, Состояния транзакций кратко

Лекция



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

Что такое транзакция базы данных?

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

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

10.1. Транзакции и целостность баз данных и  ACID, Состояния транзакций10.1. Транзакции и целостность баз данных и  ACID, Состояния транзакций

Понятие транзакции имеет непосредственную связь с понятием целостности БД. Очень часто БД может обладать такими ограничениями целостности, которые просто невозможно не нарушить, выполняя только один оператор изменения БД. Например, в базе данных СОТРУДНИКИ-ОТДЕЛЫ естественным ограничением целостности является совпадения значения атрибута ОТД_РАЗМЕР в кортеже отношения ОТДЕЛЫ, описывающем данный отдел (например, отдел 320), с числом кортежей отношения СОТРУДНИКИ таких, что значение атрибута СОТР_ОТД_НОМЕР равно 320. Как в этом случае принять на работу в отдел 320 нового сотрудника? Независимо от того, какая операция будет выполнена первой, вставка нового кортежа в отношение СОТРУДНИКИ или модификация существующего кортежа в отношении ОТДЕЛЫ, после выполнения операции база данных окажется в нецелостном состоянии.

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

Если быть немного более точным, различаются два вида ограничений целостности: немедленно проверяемые и откладываемые. К немедленно проверяемым ограничениям целостности относятся такие ограничения, проверку которых бессмысленно или даже невозможно откладывать. Примером ограничения, проверку которого откладывать бессмысленно, являются ограничения домена (возраст сотрудника не может превышать 150 лет). Более сложным ограничением, проверку которого невозможно отложить, является следующее: зарплата сотрудника не может быть увеличена за одну операцию более, чем на 100,000 рублей. Немедленно проверяемые ограничения целостности соответствуют уровню отдельных операторов языкового уровня СУБД. При их нарушениях не производится откат транзакции, а лишь отвергается соответствующий оператор.

Откладываемые ограничения целостности - это ограничения на базу данных, а не на какие-либо отдельные операции. По умолчанию такие ограничения проверяются при конце транзакции, и их нарушение вызывает автоматическую замену оператора COMMIT на оператор ROLLBACK. Однако в некоторых системах поддерживается специальный оператор насильственной проверки ограничений целостности внутри транзакции. Если после выполнения такого оператора обнаруживается, что условия целостности не выполнены, пользователь может сам выполнить оператор ROLLBACK или постараться устранить причины нецелостного состояния базы данных внутри транзакции (видимо, это осмысленно только при использовании интерактивного режима работы).

И еще одно замечание. С точки зрения внешнего представления в момент завершения транзакции проверяются все откладываемые ограничения целостности, определенные в этой базе данных. Однако при реализации стремятся при выполнении транзакции динамически выделить те ограничения целостности, которые действительно могли бы быть нарушены. Например, если при выполнении транзакции над базой данных СОТРУДНИКИ-ОТДЕЛЫ в ней не выполнялись операторы вставки или удаления кортежей из отношения СОТРУДНИКИ, то проверять упоминавшееся выше ограничение целостности не требуется (а проверка подобных ограничений вызывает достаточно большую работу).

Факты о транзакциях в базах данных

  • Транзакция - это программная единица, выполнение которой может или не может изменить содержимое базы данных.
  • Концепция транзакции в СУБД выполняется как единое целое.
  • Если операции с базой данных не обновляют базу данных, а только извлекают данные, этот тип транзакции называется транзакцией только для чтения.
  • Успешная транзакция может изменить базу данных с одного СОГЛАСОВАННОГО СОСТОЯНИЯ на другое.
  • Транзакции СУБД должны быть атомарными, последовательными, изолированными и надежными.
  • Если до транзакции база данных находилась в несогласованном состоянии, она осталась бы в несогласованном состоянии после транзакции.

Зачем вам нужен параллелизм в транзакциях?

База данных - это совместно используемый ресурс. Об этом говорит сайт https://intellect.icu . Он используется многими пользователями и процессами одновременно. Например, банковская система, железнодорожные и авиационные системы бронирования, мониторинг фондового рынка, инвентарь в супермаркетах, кассы и т. Д.

Отсутствие управления одновременным доступом может вызвать такие проблемы, как:
  • Аппаратный сбой и сбои системы
  • Одновременное выполнение одной и той же транзакции, взаимоблокировка или низкая производительность

состояния транзакций

Ниже перечислены различные состояния концепции транзакции в СУБД:

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

10.1. Транзакции и целостность баз данных и  ACID, Состояния транзакций

Диаграмма перехода состояний для транзакции базы данных

Давайте изучим диаграмму перехода состояний, которая показывает, как транзакция перемещается между этими различными состояниями.

  1. Как только транзакция получает статус выполнения, она становится активной. Он может выполнить операцию READ или WRITE.
  2. После завершения операций READ и WRITE транзакция переходит в состояние частичной фиксации.
  3. Далее, некоторые протоколы восстановления должны гарантировать, что сбой системы не приведет к невозможности постоянной записи изменений в транзакции. Если эта проверка прошла успешно, транзакция фиксируется и переходит в зафиксированное состояние.
  4. Если проверка не удалась, транзакция переходит в состояние Failed.
  5. Если транзакция прерывается, пока она находится в активном состоянии, она переходит в состояние сбоя. Транзакцию следует откатить, чтобы отменить влияние ее операций записи на базу данных.
  6. Завершенное состояние относится к транзакции, покидающей систему.

Что такое свойства ACID?

Свойства ACID используются для поддержания целостности базы данных во время обработки транзакции. ACID в СУБД означает Atomicity, Consistency, Isolation и Durability.

  • Атомарность: транзакция - это единая операция. Вы либо выполняете его полностью, либо не выполняете совсем. Не может быть частичного исполнения.
  • Согласованность: после выполнения транзакции она должна перейти из одного согласованного состояния в другое.
  • Изоляция: транзакция должна выполняться изолированно от других транзакций (без блокировок). Во время параллельного выполнения транзакции промежуточные результаты транзакций из одновременно выполняемых транзакций не должны быть доступны друг другу. (Уровень 0,1,2,3)
  • Долговечность: · После успешного завершения транзакции изменения в базе данных должны сохраняться. Даже в случае сбоев системы.

Свойство ACID в СУБД с примером:

Ниже приведен пример свойства ACID в СУБД:

  10.1. Транзакции и целостность баз данных и  ACID, Состояния транзакций

Транзакция 1 переводит 50 долларов со счета X на счет Y.

Транзакция 2 - это зачисление на каждый счет 10% процентов.

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

Типы Транзакций

На основе областей применения

  • Нераспределенные vs. распределенные
  • Компенсационные транзакции
  • Время транзакций
  • Онлайн и batch

На основе действий

  • Двушаговые
  • Restricted (Ограниченные)
  • Модель действия

На основе структуры

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

Что такое расписание?

Расписание - это процесс, создающий единую группу из нескольких параллельных транзакций и выполняющий их одну за другой. Он должен сохранять порядок, в котором инструкции появляются в каждой транзакции. Если две транзакции выполняются одновременно, результат одной транзакции может повлиять на вывод другой.

пример

  10.1. Транзакции и целостность баз данных и  ACID, Состояния транзакций

Если Транзакция 2 выполняется до Транзакции 1, будет считана устаревшая информация о количестве товара. Следовательно, графики необходимы.

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

ЭКВИВАЛЕНТНОСТЬ РЕЗУЛЬТАТОВ:

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

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

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

КОНФЛИКТНАЯ эквивалентность

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

Что такое сериализуемость?

Сериализуемость - это процесс поиска параллельного расписания, вывод которого равен последовательному расписанию, в котором транзакции выполняются одна за другой. В зависимости от типа расписаний существует два типа сериализуемости:

  • Конфликт
  • Посмотр

Резюме:

  • Управление транзакциями - это логическая единица обработки в СУБД, которая влечет за собой одну или несколько операций доступа к базе данных.
  • Это транзакция - это программный модуль, выполнение которого может или не может изменить содержимое базы данных.
  • Отсутствие управления одновременным доступом может вызвать такие проблемы, как отказ оборудования и сбои системы.
  • Активный, частично зафиксированный, подтвержденный, неудачный и завершенный - важные состояния транзакции.
  • Полная форма свойств ACID в СУБД - это атомарность, согласованность, изоляция и долговечность.
  • Три типа транзакций СУБД: «Основа по областям приложения», «Действие» и «Структура».
  • Расписание - это процесс, создающий единую группу из нескольких параллельных транзакций и выполняющий их одну за другой.
  • Сериализуемость - это процесс поиска параллельного расписания, выходные данные которого равны последовательному расписанию, в котором транзакции выполняются одна за другой.

Вау!! 😲 Ты еще не читал? Это зря!

Напиши свое отношение про транзакция. Это меня вдохновит писать для тебя всё больше и больше интересного. Спасибо Надеюсь, что теперь ты понял что такое транзакция, состояния транзакций и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории IBM System R — реляционная СУБД

создано: 2014-09-27
обновлено: 2021-03-13
132459



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

IBM System R — реляционная СУБД

Термины: IBM System R — реляционная СУБД