DDBMS - Системы обработки транзакций

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

Сделки

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

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

  • read_item() - считывает данные из хранилища в основную память.

  • modify_item() - изменить значение элемента в основной памяти.

  • write_item() - записать измененное значение из оперативной памяти в хранилище.

Доступ к базе данных ограничен операциями read_item () и write_item (). Точно так же для всех транзакций чтение и запись составляют основные операции с базой данных.

Транзакционные операции

Операции низкого уровня, выполняемые в транзакции:

  • begin_transaction - Маркер, указывающий на начало выполнения транзакции.

  • read_item or write_item - Операции с базой данных, которые могут чередоваться с операциями с основной памятью как часть транзакции.

  • end_transaction - Маркер, обозначающий конец транзакции.

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

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

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

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

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

  • Partially Committed - Транзакция переходит в это состояние после выполнения последнего оператора транзакции.

  • Committed - Транзакция переходит в это состояние после успешного завершения транзакции, и системные проверки выдали сигнал фиксации.

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

  • Aborted - Это состояние после отката транзакции после сбоя и восстановления базы данных до состояния, которое было до начала транзакции.

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

Желательные свойства транзакций

Любая транзакция должна поддерживать свойства ACID, а именно. Атомарность, последовательность, изолированность и долговечность.

  • Atomicity- Это свойство указывает, что транзакция является элементарной единицей обработки, то есть она либо выполняется полностью, либо не выполняется вообще. Частичного обновления быть не должно.

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

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

  • Durability - Если зафиксированная транзакция вызывает изменение, это изменение должно сохраняться в базе данных и не теряться в случае сбоя.

Расписания и конфликты

В системе с несколькими одновременными транзакциями schedule- общий порядок выполнения операций. Дано расписание S, состоящее из n транзакций, скажем, T1, T2, T3 ……… ..Tn; для любой транзакции Ti операции в Ti должны выполняться, как указано в расписании S.

Типы расписаний

Есть два типа расписаний -

  • Serial Schedules- В последовательном расписании в любой момент времени активна только одна транзакция, т.е. нет перекрытия транзакций. Это изображено на следующем графике -

  • Parallel Schedules- В параллельных расписаниях одновременно активны более одной транзакции, т. Е. Транзакции содержат операции, которые перекрываются во времени. Это изображено на следующем графике -

Конфликты в расписаниях

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

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

  • Обе операции обращаются к одному и тому же элементу данных.

  • По крайней мере, одна из операций - это операция write_item (), то есть она пытается изменить элемент данных.

Сериализуемость

А serializable scheduleof 'n' транзакций - это параллельное расписание, которое эквивалентно последовательному расписанию, состоящему из тех же 'n' транзакций. Сериализуемое расписание содержит правильность последовательного расписания, обеспечивая лучшую загрузку ЦП параллельным расписанием.

Эквивалентность расписаний

Эквивалентность двух расписаний может быть следующих типов -

  • Result equivalence - Два графика, дающие одинаковые результаты, считаются эквивалентными по результатам.

  • View equivalence - Два расписания, которые выполняют похожие действия аналогичным образом, называются эквивалентными по просмотрам.

  • Conflict equivalence - Два расписания считаются конфликтно эквивалентными, если оба содержат одинаковый набор транзакций и имеют одинаковый порядок конфликтующих пар операций.