Лекция
Привет, мой друг, тебе интересно узнать все про транзакция, тогда с вдохновением прочти до конца. Для того чтобы лучше понимать что такое транзакция, состояния транзакций , настоятельно рекомендую прочитать все из категории IBM System R — реляционная СУБД.
транзакции в Базах данных - это логическая единицей обработки в СУБД , которая влечет за собой одно или более операции доступа к базе данных. В двух словах, транзакции базы данных представляют собой реальные события любого предприятия.
Все типы операций доступа к базе данных, которые проводятся между операторами начала и конца транзакции, рассматриваются в СУБД как одна логическая транзакция. Во время транзакции база данных несовместима. Только после того, как база данных зафиксирована, состояние меняется с одного согласованного состояния на другое.
Понятие транзакции имеет непосредственную связь с понятием целостности БД. Очень часто БД может обладать такими ограничениями целостности, которые просто невозможно не нарушить, выполняя только один оператор изменения БД. Например, в базе данных СОТРУДНИКИ-ОТДЕЛЫ естественным ограничением целостности является совпадения значения атрибута ОТД_РАЗМЕР в кортеже отношения ОТДЕЛЫ, описывающем данный отдел (например, отдел 320), с числом кортежей отношения СОТРУДНИКИ таких, что значение атрибута СОТР_ОТД_НОМЕР равно 320. Как в этом случае принять на работу в отдел 320 нового сотрудника? Независимо от того, какая операция будет выполнена первой, вставка нового кортежа в отношение СОТРУДНИКИ или модификация существующего кортежа в отношении ОТДЕЛЫ, после выполнения операции база данных окажется в нецелостном состоянии.
Поэтому для поддержания подобных ограничений целостности допускается их нарушение внутри транзакции с тем условием, чтобы к моменту завершения транзакции условия целостности были соблюдены. В системах с развитыми средствами ограничения и контроля целостности каждая транзакция начинается при целостном состоянии БД и должна оставить это состояние целостными после своего завершения. Несоблюдение этого условия приводит к тому, что вместо фиксации результатов транзакции происходит ее откат (т.е. вместо оператора COMMIT выполняется оператор ROLLBACK), и БД остается в таком состоянии, в котором находилась к моменту начала транзакции, т.е. в целостном состоянии.
Если быть немного более точным, различаются два вида ограничений целостности: немедленно проверяемые и откладываемые. К немедленно проверяемым ограничениям целостности относятся такие ограничения, проверку которых бессмысленно или даже невозможно откладывать. Примером ограничения, проверку которого откладывать бессмысленно, являются ограничения домена (возраст сотрудника не может превышать 150 лет). Более сложным ограничением, проверку которого невозможно отложить, является следующее: зарплата сотрудника не может быть увеличена за одну операцию более, чем на 100,000 рублей. Немедленно проверяемые ограничения целостности соответствуют уровню отдельных операторов языкового уровня СУБД. При их нарушениях не производится откат транзакции, а лишь отвергается соответствующий оператор.
Откладываемые ограничения целостности - это ограничения на базу данных, а не на какие-либо отдельные операции. По умолчанию такие ограничения проверяются при конце транзакции, и их нарушение вызывает автоматическую замену оператора COMMIT на оператор ROLLBACK. Однако в некоторых системах поддерживается специальный оператор насильственной проверки ограничений целостности внутри транзакции. Если после выполнения такого оператора обнаруживается, что условия целостности не выполнены, пользователь может сам выполнить оператор ROLLBACK или постараться устранить причины нецелостного состояния базы данных внутри транзакции (видимо, это осмысленно только при использовании интерактивного режима работы).
И еще одно замечание. С точки зрения внешнего представления в момент завершения транзакции проверяются все откладываемые ограничения целостности, определенные в этой базе данных. Однако при реализации стремятся при выполнении транзакции динамически выделить те ограничения целостности, которые действительно могли бы быть нарушены. Например, если при выполнении транзакции над базой данных СОТРУДНИКИ-ОТДЕЛЫ в ней не выполнялись операторы вставки или удаления кортежей из отношения СОТРУДНИКИ, то проверять упоминавшееся выше ограничение целостности не требуется (а проверка подобных ограничений вызывает достаточно большую работу).
База данных - это совместно используемый ресурс. Об этом говорит сайт https://intellect.icu . Он используется многими пользователями и процессами одновременно. Например, банковская система, железнодорожные и авиационные системы бронирования, мониторинг фондового рынка, инвентарь в супермаркетах, кассы и т. Д.
Ниже перечислены различные состояния концепции транзакции в СУБД:
состояние | Типы транзакций |
Активное состояние | Транзакция переходит в активное состояние, когда начинается процесс выполнения. В этом состоянии могут выполняться операции чтения или записи. |
Частично совершено | После завершения транзакции транзакция переходит в состояние частичной фиксации. |
Выполненное состояние | Когда транзакция зафиксирована в состоянии, она уже успешно завершила свое выполнение. Более того, все его изменения постоянно фиксируются в базе данных. |
Неудачное состояние | Транзакция считается неудачной, если какая-либо из проверок не удалась или транзакция была прервана, пока она находится в активном состоянии. |
Прекращенное состояние | Состояние транзакции переходит в состояние завершения, когда определенные транзакции, покидающие систему, не могут быть перезапущены. |
Диаграмма перехода состояний для транзакции базы данных
Давайте изучим диаграмму перехода состояний, которая показывает, как транзакция перемещается между этими различными состояниями.
Свойства ACID используются для поддержания целостности базы данных во время обработки транзакции. ACID в СУБД означает Atomicity, Consistency, Isolation и Durability.
Ниже приведен пример свойства ACID в СУБД:
Транзакция 1 переводит 50 долларов со счета X на счет Y.
Транзакция 2 - это зачисление на каждый счет 10% процентов.
Если обе транзакции отправляются вместе, нет гарантии, что транзакция 1 будет выполнена до транзакции 2 или наоборот. Независимо от порядка, результат должен быть таким, как если бы транзакции выполнялись последовательно одна за другой.
На основе областей применения
На основе действий
На основе структуры
Расписание - это процесс, создающий единую группу из нескольких параллельных транзакций и выполняющий их одну за другой. Он должен сохранять порядок, в котором инструкции появляются в каждой транзакции. Если две транзакции выполняются одновременно, результат одной транзакции может повлиять на вывод другой.
пример
Если Транзакция 2 выполняется до Транзакции 1, будет считана устаревшая информация о количестве товара. Следовательно, графики необходимы.
Параллельное выполнение в базе данных неизбежно. Но параллельное выполнение разрешено, когда между одновременно выполняющимися транзакциями существует отношение эквивалентности. Эта эквивалентность бывает трех типов.
ЭКВИВАЛЕНТНОСТЬ РЕЗУЛЬТАТОВ:
Если два расписания отображают один и тот же результат после выполнения, это называется расписанием эквивалентного результата. Они могут предложить тот же результат для одного значения и разные результаты для другого набора значений. Например, одна транзакция обновляет количество продукта, а другая обновляет данные о клиенте.
Просмотр эквивалентности
Просмотр эквивалентности возникает, когда транзакция в обоих расписаниях выполняет аналогичное действие. Например, одна транзакция вставляет сведения о продукте в таблицу продуктов, а другая транзакция вставляет сведения о продукте в архивную таблицу. Транзакция такая же, но таблицы разные.
КОНФЛИКТНАЯ эквивалентность
В этом случае две транзакции обновляют / просматривают один и тот же набор данных. Между транзакциями существует конфликт, так как порядок выполнения влияет на результат.
Сериализуемость - это процесс поиска параллельного расписания, вывод которого равен последовательному расписанию, в котором транзакции выполняются одна за другой. В зависимости от типа расписаний существует два типа сериализуемости:
Напиши свое отношение про транзакция. Это меня вдохновит писать для тебя всё больше и больше интересного. Спасибо Надеюсь, что теперь ты понял что такое транзакция, состояния транзакций и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории IBM System R — реляционная СУБД
Комментарии
Оставить комментарий
Базы данных - IBM System R — реляционная СУБД
Термины: Базы данных - IBM System R — реляционная СУБД