Расписание (информатика) - Schedule (computer science)

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

Формальное описание

Ниже приводится пример расписания:

D
Т1 Т2 Т3
R (X)
W (X)
Com.
R (Y)
W (Г)
Com.
R (Z)
W (Z)
Com.

В этом примере горизонтальная ось представляет различные транзакции в расписании D. Вертикальная ось представляет собой временной порядок операций. График D состоит из трех транзакций T1, T2, T3. В расписании описываются действия транзакций с точки зрения СУБД. Сначала T1 читает и записывает в объект X, а затем фиксирует. Затем T2 читает и записывает в объект Y и фиксирует, и, наконец, T3 читает и записывает в объект Z и фиксирует. Это пример серийный расписание, то есть последовательное без перекрытия во времени, потому что действия всех трех транзакций являются последовательными и транзакции не чередуются во времени.

Представление расписания D выше в виде таблицы (а не списка) просто для удобства идентификации операций каждой транзакции с первого взгляда. Это обозначение используется в статье ниже. Более распространенный способ представления такого графика в технической литературе - список:

D = R1 (X) W1 (X) Com1 R2 (Y) W2 (Y) Com2 R3 (Z) W3 (Z) Com3

Обычно, чтобы рассуждать об управлении параллелизмом в базах данных, операция моделируется как атомный, происходящие в определенный момент времени, без продолжительности. Когда это неудовлетворительно, указываются начальные и конечные моменты времени и, возможно, другие точечные события (редко). Реально выполняемые операции всегда имеют некоторую продолжительность и определенное время возникновения событий в них (например, «точное» время начала и завершения), но для соображений управления параллелизмом обычно используется только приоритет во времени всех операций (без учета довольно сложные детали каждой операции), т. е. какая операция выполняется до или после другой операции. Более того, во многих случаях отношения до / после между двумя конкретными операциями не имеют значения и не должны указываться, в то время как они указываются для других пар операций.

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

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

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

Виды расписания

Серийный

Транзакции выполняются без чередования (см. Пример выше), то есть последовательное расписание - это такое, в котором транзакция не начинается до тех пор, пока текущая транзакция не закончится.

Сериализуемый

Расписание, эквивалентное (по своему результату) последовательному расписанию, имеет сериализуемость свойство.

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

E
Т1 Т2 Т3
R (X)
R (Y)
R (Z)
W (X)
W (Г)
W (Z)
Com. Com. Com.

Противоречивые действия

Считается, что два действия находятся в конфликте (конфликтующая пара), если:

  1. Действия относятся к разным транзакциям.
  2. По крайней мере, одно из действий - это операция записи.
  3. Действия обращаются к одному и тому же объекту (чтение или запись).

Следующий набор действий противоречит:

  • R1 (X), W2 (X), W3 (X) (3 конфликтующие пары)

Пока следующих наборов действий нет:

  • R1 (X), R2 (X), R3 (X)
  • R1 (X), W2 (Y), R3 (X)

Конфликтная эквивалентность

Расписания S1 и S2 называются конфликтно-эквивалентными, если выполняются следующие два условия:

  1. Оба расписания S1 и S2 включают один и тот же набор транзакций (включая упорядочение действий внутри каждой транзакции).
  2. Оба расписания содержат одинаковый набор конфликтующих операций.

Конфликт-сериализуемый

Расписание называется конфликтно-сериализуемым, если оно конфликтно эквивалентно одному или нескольким последовательным расписаниям.

Другое определение конфликтной сериализуемости состоит в том, что расписание является конфликтным тогда и только тогда, когда его граф приоритета Граф / сериализуемость, когда рассматриваются только зафиксированные транзакции, является ациклическим (если определено, что граф включает в себя также незафиксированные транзакции, то циклы, включающие незафиксированные транзакции, могут происходить без нарушения конфликтной сериализуемости).

г
Т1 Т2
R (А)
R (А)
W (В)
Com.
Вт (А)
Com.

Это конфликтно-эквивалентно последовательному расписанию , но не .

Обязательство заказано

Расписание называется упорядоченным по обязательству (заказанным по фиксации) или сериализуемым по порядку фиксации, если оно подчиняется Заказ обязательств (CO; также фиксация-упорядочивание или фиксация-заказ-сериализуемость) свойство расписания. Это означает, что порядок событий фиксации транзакций по времени совместим с порядком приоритета (частичным) соответствующих транзакций, что определяется ациклическим графом приоритета их расписания (графом сериализуемости, графом конфликтов). Это означает, что он также может сериализоваться по конфликтам. Свойство CO особенно эффективно для достижения Глобальная сериализуемость в распределенных системах.

Комментарий: Заказ обязательств, открытая в 1990 г., в (Бернштейн и др. 1987 г. ). Его правильное определение содержится в (Вейкум и Фоссен 2001 ), однако описание связанных с ним методов и теории является частичным, неточным и вводящим в заблуждение.[согласно кому? ] Подробное описание заказа обязательств и его источников см. Заказ обязательств и История упорядочивания обязательств.

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

Два расписания S1 и S2 называются эквивалентными по виду, если выполняются следующие условия:

  1. Если сделка в S1 считывает начальное значение для объекта X, транзакция тоже в S2.
  2. Если сделка в S1 читает значение, записанное транзакцией в S1 для объекта X, транзакция в S2.
  3. Если сделка в S1 - это последняя транзакция для записи значения для объекта X, так же как и транзакция в S2.

Сериализуемый для просмотра

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

г
Т1 Т2
R (А)
R (А)
W (В)

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

ЧАС
Т1 Т2 Т3
R (А)
Вт (А)
Com.
Вт (А)
Com.
Вт (А)
Com.

Приведенный выше пример не является сериализуемым конфликтом, но он сериализуем по просмотру, поскольку он имеет эквивалентное по представлению последовательное расписание .

Поскольку определение того, является ли расписание сериализуемым по просмотру, НП-полный, сериализуемость представлений не представляет особого интереса.[нужна цитата ]

Восстанавливаемый

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

F
Т1 Т2
R (А)
Вт (А)
R (А)
Вт (А)
Com.
Com.
Т2
R (А)
Вт (А)
R (А)
Вт (А)
Прервать
Прервать

Эти графики можно восстановить. F можно восстановить, потому что T1 фиксируется до T2, что делает значение, считываемое T2, правильным. Тогда T2 может зафиксировать себя. В F2, если T1 прерван, T2 должен прерваться, потому что значение A, которое он считал, неверно. В обоих случаях база данных остается в согласованном состоянии.

Безвозвратно

Если транзакция T1 прерывается, а транзакция T2 фиксируется, но T2 полагается на T1, у нас есть невосстановимый график.

г
Т1 Т2
R (А)
Вт (А)
R (А)
Вт (А)
Com.
Прервать

В этом примере G невозможно восстановить, потому что T2 прочитал значение A, записанное T1, и зафиксировал. Позднее T1 был прерван, поэтому значение, прочитанное T2, неверно, но поскольку T2 зафиксирован, это расписание невозможно восстановить.

Безкаскадный

Также «Предотвращение каскадных прерываний (ACA)». Избегает того, что прерывание одной транзакции приводит к серии откатов транзакции. Стратегия предотвращения каскадных прерываний состоит в том, чтобы запретить транзакции читать незафиксированные изменения из другой транзакции в том же расписании.

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

F
Т1 Т2
R (А)
Вт (А)
R (А)
Вт (А)
Com.
Com.
Т2
R (А)
Вт (А)
R (А)
Вт (А)
Прервать
Прервать

В этом примере, хотя F2 можно восстановить, он не позволяет избежать каскадных прерываний. Можно видеть, что если T1 прерывается, T2 также должен быть прерван, чтобы поддерживать правильность расписания, поскольку T2 уже прочитал незафиксированное значение, записанное T1.

Ниже приводится восстанавливаемое расписание, которое позволяет избежать каскадного прерывания. Обратите внимание, однако, что обновление A с помощью T1 всегда теряется (поскольку T1 прерывается).

F3
Т1 Т2
R (А)
R (А)
Вт (А)
Вт (А)
Прервать
Зафиксировать

Обратите внимание, что это расписание не будет сериализуемым, если будет зафиксирован T1. Избегание каскадных прерываний достаточно, но не обязательно для восстановления расписания.

Строгий

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

Любой строгий график является безкаскадным, но не наоборот. Строгость позволяет эффективно восстанавливать базы данных после сбоев.

Иерархическая связь между классами сериализуемости

Следующие выражения иллюстрируют иерархические (вмещающие) отношения между сериализуемость и восстанавливаемость классы:

  • Серийный ⊂ обязательственно-упорядоченный ⊂ конфликтно-сериализуемый ⊂ сериализуемый по видам ⊂ все расписания
  • Последовательный ⊂ строгий ⊂ каскадный (ACA) ⊂ восстанавливаемый ⊂ все расписания

В Диаграмма Венна (ниже) графически иллюстрирует вышеуказанные пункты.

Диаграмма Венна для классов сериализуемости и восстанавливаемости

Практические реализации

На практике, большинство систем баз данных общего назначения используют сериализуемые конфликты и восстанавливаемые (в основном строгие) расписания.

Смотрите также

Рекомендации

  • Филип А. Бернштейн, Вассос Хадзилакос, Натан Гудман: Контроль параллелизма и восстановление в системах баз данных, Издательство Addison Wesley Publishing Company, 1987 г., ISBN  0-201-10715-5
  • Герхард Вейкум, Готфрид Фоссен: Системы транзакционной информации, Эльзевир, 2001, ISBN  1-55860-508-8