Понятие транзакции. Виды транзакций. Использование транзакций при разрешении конфликтных ситуаций

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

Транзакционной базы данных

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

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

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

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

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

  • Транзакция выполняется как единое целое

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

  • Успешная транзакция может изменить базу данных с одного СОСТОЯНИЯ на другое

  • Транзакции СУБД должны быть атомарными, согласованными, изолированными и долговечными

  • Если база данных находилась в несогласованном состоянии до транзакции, она оставалась бы в несогласованном состоянии после транзакции.

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

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

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

  • Отказ оборудования и сбои системы

  • Параллельное выполнение одной и той же транзакции, тупик или низкая производительность

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

Различные состояния транзакции базы данных перечислены ниже

государственный Типы транзакций

Активное состояние

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

Частично совершено

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

Совершенное государство

Когда транзакция подтверждена, она уже успешно завершила свое выполнение. Более того, все его изменения записываются в базу данных постоянно.

Неудачное состояние

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

Прекращенное состояние

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

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

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

  1. Как только транзакция сообщает о выполнении, она становится активной. Он может выполнить операцию чтения или записи.

  2. После завершения операций READ и WRITE транзакции становятся частично зафиксированными.

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

  4. Если проверка не пройдена, транзакция переходит в состояние «Сбой».

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

  6. Прекращенное состояние относится к транзакции, покидающей систему.

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

КИСЛОТНЫЕ СВОЙСТВА

используются для поддержания целостности базы данных во время обработки транзакций. КИСЛОТА обозначает

A

tomicity,

C

onsistency,

I

solation и

D

urability.

  • Атомарность:

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

  • Согласованность:

    после выполнения транзакции она должна перейти из одного согласованного состояния в другое.

  • Изоляция:

    транзакция должна выполняться изолированно от других транзакций (без блокировок). Во время одновременного выполнения транзакции промежуточные результаты транзакций, выполняемые одновременно выполняемыми транзакциями, не должны быть доступны друг другу. (Уровень 0,1,2,3)

  • Долговечность: ·

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

Пример КИСЛОТЫ

Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END 

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

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

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

Типы сделок

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

  • Нераспределенный или распределенный

  • Компенсирующие транзакции

  • Сроки транзакций

  • Онлайн против партии

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

  • Два шага

  • Ограниченный

  • Модель действия

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

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

  • Вложенные транзакции: транзакция, которая содержит другие транзакции.

  • Workflow

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

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

пример

Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity 

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

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

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

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

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

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

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

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

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

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

  • конфликт

  • Посмотреть

Резюме:

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

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

  • Отсутствие одновременного доступа может привести к таким проблемам, как сбой оборудования и сбой системы.

  • Активные, Частично зафиксированные, Подтвержденные, Сбой и Завершение являются важными состояниями транзакции.

  • Полная форма ACID — это атомарность, согласованность, изоляция и долговечность.

  • Три типа транзакций СУБД основаны на областях приложения, действии и структуре.

  • Расписание — это процесс, который создает одну группу из нескольких параллельных транзакций и выполняет их одну за другой.

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

Транза́кция (англ. transaction) — группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще, и тогда она не должна произвести никакого эффекта. Транзакции обрабатываются транзакционными системами, в процессе работы которых создаётся история транзакций.

Различают последовательные (обычные), параллельные и распределённые транзакции. Распределённые транзакции подразумевают использование более чем одной транзакционной системы и требуют намного более сложной логики (например, two-phase commit — двухфазный протокол фиксации транзакции). Также в некоторых системах реализованы автономные транзакции, или под-транзакции, которые являются автономной частью родительской транзакции.

Пример транзакции

Пример: необходимо перевести с банковского счёта номер 5 на счёт номер 7 сумму в 10 денежных единиц. Этого можно достичь, к примеру, приведённой последовательностью действий:

  1. Прочесть баланс на счету номер 5.
  2. Уменьшить баланс на 10 денежных единиц.
  3. Сохранить новый баланс счёта номер 5.
  4. Прочесть баланс на счету номер 7.
  5. Увеличить баланс на 10 денежных единиц.
  6. Сохранить новый баланс счёта номер 7.

Эти действия представляют собой логическую единицу работы «перевод суммы между счетами», и таким образом, являются транзакцией. Если прервать данную транзакцию, к примеру, в середине, и не аннулировать все изменения, легко оставить владельца счёта номер 5 без 10 единиц, тогда как владелец счета номер 7 их не получит.

Свойства транзакций

Одним из наиболее распространённых наборов требований к транзакциям и транзакционным системам является набор ACID (Atomicity, Consistency, Isolation, Durability). Требования ACID были в основном сформулированы в конце 1970-х годов Джимом Греем[1]. Вместе с тем существуют специализированные системы с ослабленными транзакционными свойствами[2].

Уровни изоляции транзакций

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

Уровни описаны в порядке увеличения изолированности транзакций и, соответственно, надёжности работы с данными.

  • 0 — Чтение незафиксированных данных (Read Uncommitted) — чтение незафиксированных изменений как своей транзакции, так и параллельных транзакций. Нет гарантии, что данные, изменённые другими транзакциями, не будут в любой момент изменены в результате их отката, поэтому такое чтение является потенциальным источником ошибок. Невозможны потерянные изменения (lost changes), возможны грязное чтение (dirty read), неповторяемое чтение и фантомы.
  • 1 — Чтение зафиксированных данных (Read Committed) — чтение всех изменений своей транзакции и зафиксированных изменений параллельных транзакций. Потерянные изменения и грязное чтение не допускается, возможны неповторяемое чтение и фантомы.
  • 2 — Повторяемое чтение (Repeatable Read, Snapshot) — чтение всех изменений своей транзакции, любые изменения, внесённые параллельными транзакциями после начала своей, недоступны. Потерянные изменения, грязное и неповторяемое чтение невозможны, возможны фантомы.
  • 3 — Сериализуемый (Serializable) — сериализуемые транзакции. Результат параллельного выполнения сериализуемой транзакции с другими транзакциями должен быть логически эквивалентен результату их какого-либо последовательного выполнения. Проблемы синхронизации не возникают.

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

В СУБД уровень изоляции транзакций можно выбрать как для всех транзакций сразу, так и для одной конкретной транзакции. По умолчанию в большинстве баз данных используется уровень 1 (Read Committed). Уровень 0 используется в основном для отслеживания изменений длительных транзакций или для чтения редко изменяемых данных. Уровни 2 и 3 используются при повышенных требованиях к изолированности транзакций.

Реализация

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

Первые коммерческие СУБД (к примеру, IBM DB2), пользовались исключительно блокировкой доступа к данным для обеспечения свойств ACID. Но большое количество блокировок приводит к существенному уменьшению производительности. Есть два популярных семейства решений этой проблемы, которые снижают количество блокировок:

imageЭта страница в последний раз была отредактирована 24 марта 2021 в 11:49.image Обучение –> Новости Маржа простыми словами Каждый предприниматель в своей деятельности сталкивается с понятием «маржа», но не до конца понимает значение этого слова, а ведь именно маржа Деноминация простыми словами Услышав слово «деноминация», многие люди пугаются, поскольку у них оно ассоциируется с какими-то негативными явлениями в экономике страны. На самом Факторинг: сущность и основные преимущества В современном мире успешное ведение бизнеса тесно связано с кредитованием. Среди разнообразия кредитных услуг для малого предпринимательства особое Стагнация: сущность и основные причины Экономика имеет циклический характер. Периоды экономического роста чередуются с периодами спада. Поэтому стагнация (от латинского stagnum – «стоячая Понятие девальвации простыми словами Девальвация – объективный процесс, который присущ для экономики любой страны. Хотя мы очень часто слышим данное слово, не каждый из нас понимает его Понятие дебиторской задолженности простыми словами Рыночная экономика в отличие от плановой предоставляет широкие возможности для большей самореализации, выражающейся в воплощении собственных 1 Транзакция – что это такое: определение термина простыми словами. Максим Иванов 1 79 79

Транзакция (также трансакция, от латинского «transactio» – соглашение) – это операция с денежными средствами на банковском счете. К транзакциям относятся зачисление, списание и перевод средств. Например, оплата покупки банковской картой или снятие наличных в банкомате – это транзакции.

Различают онлайн-транзакции (между участниками есть связь в режиме реального времени) и офлайн-транзакции (между участниками нет связи). Каждая транзакция проводится по заранее установленному алгоритму, условия которого должны быть одинаковы для любых участников и ситуаций. Транзакция может быть отменена только после ее завершения – в процессе проведения операции вносить изменения нельзя.

Источники

Николай Потапов 79 17image

Что такое транзакция на простом языке

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

  • транзакция;
  • трансакция.

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

  • Купля-продажа акций и ценных бумаг на бирже;
  • Получение или внесение наличных средств на банковскую карту;
  • Оплата услуг пластиковой картой через терминал;
  • Приобретение товаров, оплата услуг в Интернете и т.д.

Термины и определения

В связи с этим принято делить транзакции на два вида, в зависимости от условий проведения сделки и личного участия сторон:

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

  • Получение денег в банкомате;
  • Расчет пластиковой картой при покупке в магазине;
  • Получение онлайн-займа;
  • Перевод с карты на карту.

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

image

Прежде всего, стоит понимать, что сделка происходит не между человеком и магазином, а между двумя банками:

  • Банк-эмитент, который выпустил и обслуживает карту;
  • Банк-эквайр, обслуживающий терминал торговой точки, через которую совершается сделка.

Суть операции заключается в следующем:

  1. Банк-эквайр запрашивает разрешение у банка-эмитента на проведение финансовой операции. В нашем случае это денежный перевод. Запрос происходит, когда кассир или покупатель вставляет карту в платежный терминал. Из него по защищенной линии отправляется зашифрованные данные, содержащие информацию о плательщике, необходимую для совершения транзакции. Как правило, это ФИО владельца, реквизиты карты и т.д.
  2. Запрос при этом отправляется не напрямую в банк, а сперва проходит проверку в процессинговом центе – специально организации, созданной для этой цели. У крупных банков, имеющих обширную клиентскую базу есть собственные процессинговые центры, остальные же вынуждены заключать договор с посредником. Процессинговый центр обрабатывает полученную информацию и на ее основе создает «запрос на авторизацию», который отправляет уже в банк-эмитент.
  3. Далее информация проходит сверку с данными банка, по результату которой банк присваивает операции уникальный код, что означает положительный ответ на запрос и отправляет данные обратно в процессинговый центр. Если данные, по какой-либо причине, не прошли проверку, банк в проведении сделки отказывает.
  4. Последний этап – анализ всей полученной информации банком-эквайром и осуществление транзакции, в результате которой происходит пересылка денег со счета клиента на счет торговой точки и выдача чека, подтверждающего сделку.

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

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий