Введение
Техника управления конкурентным доступом к базам данных
Порядок фиксации (CO) — это класс методов сериализуемости, используемых в управлении конкурентным доступом к базам данных, обработке транзакций и связанных приложениях. Он позволяет реализовывать оптимистичные (неблокирующие) подходы. С распространением многоядерных процессоров CO также все чаще используется в параллельном программировании, транзакционной памяти и программной транзакционной памяти (STM) для оптимистичного достижения сериализуемости. CO также является названием свойства расписания (истории) транзакций, определенного в 1988 году под названием динамическая атомарность. В расписании, соответствующем CO, хронологический порядок событий фиксации транзакций совместим с порядком приоритета соответствующих транзакций. CO является широким частным случаем сериализуемости по конфликтам и эффективным средством (надежным, высокопроизводительным, распределенным и масштабируемым) для достижения глобальной сериализуемости (модульной сериализуемости) в любой коллекции систем баз данных, которые могут использовать различные механизмы управления конкурентным доступом (CO также обеспечивает соответствие каждой системы требованиям сериализуемости, если она еще не соблюдается). Каждая система баз данных, не соответствующая требованиям CO, дополняется компонентом CO (координатором порядка фиксации — COCO), который упорядочивает события фиксации для обеспечения соответствия CO, без вмешательства в доступ к данным или другие операции транзакций. Таким образом, CO предоставляет решение с низкой накладной стоимостью для глобальной сериализуемости (и распределенной сериализуемости), которое играет важную роль в глобальном управлении конкурентным доступом (и распределенном управлении конкурентным доступом) к многобазовым системам и другим транзакционным объектам, возможно, сильно распределенным (например, в облачных вычислениях, вычислительных сетях и сетях смартфонов). Протокол атомарной фиксации (ACP; любого типа) является фундаментальной частью решения, используемого для разрыва глобальных циклов в графе конфликтов (приоритетов, сериализуемости). CO является наиболее общим свойством (необходимым условием), которое гарантирует глобальную сериализуемость, если участвующие системы баз данных не обмениваются информацией об управлении конкурентным доступом, кроме сообщений протокола атомарной фиксации (неизмененных), и не знают, являются ли транзакции глобальными или локальными (системы баз данных автономны). Таким образом, CO (с его вариантами) является единственной общей техникой, которая не требует обычно дорогостоящего распространения информации о локальном управлении конкурентным доступом (например, локальных отношениях приоритета, блокировках, метках времени или талонах). Он обобщает популярное свойство строгой двухфазной блокировки (SS2PL), которое в сочетании с протоколом двухфазной фиксации (2PC) является де-факто стандартом для достижения глобальной сериализуемости в системах баз данных на основе SS2PL. В результате системы баз данных, соответствующие требованиям CO (с любыми различными типами управления конкурентным доступом), могут прозрачно присоединяться к таким решениям на основе SS2PL для глобальной сериализуемости. Кроме того, глобальные взаимоблокировки, основанные на блокировках, автоматически разрешаются в многобазовой среде на основе CO, что является важным побочным преимуществом (включая особый случай полностью SS2PL-среды; ранее незамеченный факт для SS2PL). Кроме того, строгий порядок фиксации (SCO; Raz 1991c), являющийся пересечением строгости и CO, обеспечивает лучшую производительность (более короткое среднее время завершения транзакции и, как следствие, более высокую пропускную способность транзакций), чем SS2PL, когда присутствуют конфликты чтения-записи (идентичное поведение блокировки для конфликтов записи-чтения и записи-записи; сопоставимые накладные расходы на блокировку). Преимущество SCO особенно заметно при возникновении конкуренции за блокировки. Строгость позволяет SS2PL и SCO использовать одни и те же эффективные механизмы восстановления базы данных. Существуют два основных варианта обобщения CO: расширенный CO (ECO; Raz 1993a) и многоверсионный CO (MVCO; Raz 1993b). Они также обеспечивают глобальную сериализуемость без распространения информации о локальном управлении конкурентным доступом, могут быть объединены с любым соответствующим управлением конкурентным доступом и позволяют реализовывать оптимистичные (неблокирующие) подходы. Оба используют дополнительную информацию для ослабления ограничений CO и достижения лучшей параллельности и производительности. Порядок голосования (VO или обобщенный CO (GCO); Raz 2009) — это набор расписаний (свойство) и техника для CO и всех его вариантов. Локальный VO необходим для гарантии глобальной сериализуемости, если участники протокола атомарной фиксации (ACP) не обмениваются информацией об управлении конкурентным доступом (обладают свойством обобщенной автономии). CO и его варианты взаимодействуют прозрачно, гарантируя глобальную сериализуемость и автоматическое разрешение глобальных взаимоблокировок в смешанной, гетерогенной среде с различными вариантами.
Учитывания по выполнению: Координатор поручения о предоставлении обязательств (COCO)
Предполагается наличие системы баз данных в многобазовой среде. С точки зрения архитектуры программного обеспечения, компонент CO, реализующий обобщенный алгоритм CO локально, Координатор порядка обязательств (COCO), может быть разработан как посредник между (единственной) системой баз данных и компонентом протокола атомарного подтверждения (Raz 1991b). Однако COCO обычно является неотъемлемой частью системы базы данных. Функции COCO заключаются в голосовании за подтверждение готовых глобальных транзакций (обработка завершена) в соответствии с локальным порядком обязательств, голосовании за отмену транзакций, для которых система базы данных инициировала отмену (система базы данных может инициировать отмену любой транзакции по множеству причин), и передаче решения об атомарном подтверждении в систему базы данных. Для локальных транзакций (когда они могут быть идентифицированы) голосование не требуется. Для определения порядка обязательств COCO поддерживает актуальное представление локального графа конфликтов (или расширенного локального графа конфликтов для учета также взаимоблокировок, вызванных блокировками) неопределенных (не подтвержденных и не отмененных) транзакций в виде структуры данных (например, с использованием механизмов, аналогичных блокировкам для выявления конфликтов, но без блокировки доступа к данным). Компонент COCO имеет интерфейс с системой баз данных для получения уведомлений о "конфликте", "готовности" (обработка завершена; готовность голосовать по глобальной транзакции или подтвердить локальную) и "отмене" от системы баз данных. Он также взаимодействует с протоколом атомарного подтверждения для голосования и получения решения протокола по каждой глобальной транзакции. Решения передаются из COCO в систему баз данных через их интерфейс, а также уведомления о подтверждении локальных транзакций в надлежащем порядке. COCO, включая его интерфейсы, может быть расширен, если он реализует другой вариант CO (см. ниже) или играет роль в механизме управления параллелизмом базы данных, выходящую за рамки голосования при атомарном подтверждении. COCO также гарантирует локальное выполнение CO в единой изолированной системе баз данных без интерфейса с протоколом атомарного подтверждения.
Комментарии
Разделение данных (x на A; y на B) важно, поскольку без него, например, к x можно получить прямой доступ из B. Если транзакция выполняется на B одновременно с транзакциями и и напрямую записывает x, то без распределенного менеджера блокировок, блокировка на чтение x, удерживаемая на A, не видна на B и не может заблокировать эту запись (или сигнализировать о материализованном конфликте для неблокирующей версии CO; см. ниже). Таким образом, сериализуемость может быть нарушена. Благодаря разделению данных, к x нельзя получить прямой доступ из B. Однако функциональность не ограничена, и транзакция, выполняемая на B, все еще может отправить запрос на запись или чтение x (хотя это и нетипично). Этот запрос передается локальной субтранзакции транзакции на A (которая создается, если она еще не существует), которая, в свою очередь, отправляет этот запрос локальному менеджеру данных на A.
Варианты CO: особые случаи и обобщения
Классы свойств специального расписания (например, SS2PL и SCO, указанные ниже) строго содержатся в классе CO. Обобщающие классы (ECO и MVCO) строго включают класс CO (то есть включают также расписания, не соответствующие требованиям CO). Эти обобщающие варианты также гарантируют глобальную сериализуемость без распространения информации о локальном управлении параллелизмом (каждая база данных обладает свойством обобщенной автономии: она использует только локальную информацию), при этом ослабляя ограничения CO и используя дополнительную (локальную) информацию для повышения параллелизма и производительности: ECO использует знание о том, что транзакции являются локальными (то есть ограничены одной базой данных), а MVCO использует доступность значений версий данных. Как и CO, оба обобщающих варианта являются неблокирующими, не влияют на планирование операций какой-либо транзакции и могут быть беспрепятственно объединены с любым соответствующим механизмом управления параллелизмом. Термин "вариант CO" в общем смысле относится к CO, ECO, MVCO или к комбинации любого из них с любым соответствующим механизмом или свойством управления конкуренцией (включая ECO на основе нескольких версий, MVECO). Другие обобщающие варианты (гарантирующие глобальную сериализуемость без распространения информации о локальном управлении параллелизмом) неизвестны, но могут быть обнаружены в будущем.
Сильная строгая двухфазная блокировка (SS2PL)
Сильная строгая двухфазная блокировка (SS2PL; также называемая надёжностью или строгим планированием) означает, что блокировки чтения и записи транзакции освобождаются только после завершения транзакции (либо фиксации, либо отката). Множество расписаний SS2PL является собственным подмножеством множества расписаний CO. Это свойство широко используется в системах управления базами данных, и поскольку оно подразумевает CO, базы данных, использующие его и участвующие в глобальных транзакциях, совместно генерируют сериализуемое глобальное расписание (при использовании любого протокола атомарной фиксации, необходимого для атомарности в многобазной среде). В этом случае для участия в распределённом решении CO не требуется никаких модификаций или дополнений в базах данных: множество неопределённых транзакций, которые должны быть прерваны до фиксации в локальном обобщённом алгоритме CO, описанном выше, пусто из-за блокировок, и, следовательно, такой алгоритм в этом случае не нужен. Система управления базой данных может голосовать за транзакцию сразу после перехода в состояние "готовности", то есть после завершения выполнения задачи локально. Блокировки транзакции освобождаются системой управления базой данных только после решения протокола атомарной фиксации, и таким образом, условие в вышеупомянутой теореме Global CO соблюдается автоматически. Если система управления базой данных использует локальный механизм таймаута для разрешения (локальных) взаимоблокировок SS2PL, то откат заблокированных транзакций нарушает не только потенциальные локальные циклы в глобальном графе конфликтов (фактические циклы в расширенном графе конфликтов), но и потенциальные глобальные циклы системы управления базой данных как побочный эффект, если механизм отката протокола атомарной фиксации относительно медленный. Такие независимые откаты несколькими сущностями обычно могут приводить к ненужным отменам более чем одной транзакции в глобальном цикле. Ситуация иная для механизмов, основанных на графе ожидания: они не могут идентифицировать глобальные циклы, и протокол атомарной фиксации разорвёт глобальный цикл, если возникшая в результате голосования взаимоблокировка не будет разрешена ранее в другой базе данных. Локальные SS2PL в сочетании с атомарной фиксацией, обеспечивающей глобальную сериализуемость, также могут быть выведены напрямую: все транзакции, включая распределённые, подчиняются правилам 2PL (SS2PL). Механизм протокола атомарной фиксации здесь не нужен для достижения консенсуса по фиксации, а скорее для точки синхронизации на завершении второй фазы. Вероятно, по этой причине, без учёта механизма голосования по атомарной фиксации, автоматическое разрешение глобальных взаимоблокировок не было замечено до появления CO.
Строгое СО (СКО)
Строгое упорядочение обязательств (SCO; (Raz 1991c)) является пересечением строгости (частный случай восстановления) и CO и определяет верхнюю границу параллелизма расписания при наличии обоих свойств. Его можно реализовать с использованием блокирующих механизмов (блокировок), аналогичных используемым в популярном SS2PL, с сопоставимыми накладными расходами. В отличие от SS2PL, SCO не блокирует при конфликте чтения-записи, но может блокировать при фиксации изменений. SCO и SS2PL демонстрируют идентичное поведение блокировки для двух других типов конфликтов: запись-чтение и запись-запись. В результате SCO характеризуется более короткими средними периодами блокировки и более высоким уровнем параллелизма (например, симуляции производительности одной базы данных для наиболее значимого варианта блокировок с упорядоченным совместным использованием, идентичного SCO, наглядно это демонстрируют, показывая прирост примерно в 100% для некоторых рабочих нагрузок; также, при идентичных рабочих нагрузках SCO может достигать более высокой скорости обработки транзакций, чем SS2PL, до возникновения "треша" блокировок). Более высокий параллелизм означает, что при заданных вычислительных ресурсах за единицу времени завершается больше транзакций (более высокая скорость транзакций, пропускная способность), а средняя продолжительность транзакции сокращается (более быстрое завершение; см. график). Преимущество SCO особенно заметно при высокой конкуренции за блокировки. Теорема о производительности SCO против SS2PL SCO обеспечивает более короткое среднее время завершения транзакции, чем SS2PL, при наличии конфликтов чтения-записи. В противном случае SCO и SS2PL идентичны (демонстрируют идентичное поведение блокировки при конфликтах записи-чтения и записи-записи). SCO столь же практичен, как и SS2PL, поскольку, помимо сериализуемости, обеспечивает и строгость, которая широко используется в качестве основы для эффективного восстановления баз данных после сбоев. Механизм SS2PL можно легко преобразовать в SCO для повышения производительности без изменения методов восстановления. Описание реализации SCO можно найти в (Perrizo и Tatarinov 1998). См. также Полуоптимистичный планировщик базы данных. SS2PL является собственным подмножеством SCO (что является еще одним объяснением того, почему SCO менее ограничивающий и обеспечивает более высокий уровень параллелизма, чем SS2PL).
SCO provides shorter average transaction completion time than SS2PL, if read write conflicts exist. SCO and SS2PL are identical otherwise (have identical blocking behavior with write read and write write conflicts). SCO is as practical as SS2PL since as SS2PL it provides besides serializability also strictness, which is widely utilized as a basis for efficient recovery of databases from failure. An SS2PL mechanism can be converted to an SCO one for better performance in a straightforward way without changing recovery methods. A description of an SCO implementation can be found in (Perrizo and Tatarinov 1998). See also Semi optimistic database scheduler. SS2PL is a proper subset of SCO (which is another explanation why SCO is less constraining and provides more concurrency than SS2PL).
Оптимистическая ОК (ОК)
Для реализации оптимистического подтверждения заказов (OCO) используется общий локальный алгоритм CO без блокировки доступа к данным и, следовательно, без локальных взаимных блокировок. OCO без ограничений на планирование транзакций или операций охватывает весь класс CO и не является частным случаем класса CO, а представляет собой полезный вариант CO и характеристику механизма.
Пример: CO-изоляция (COSI)
CO-базирующаяся изоляция моментальных снимков (COSI) представляет собой пересечение изоляции моментальных снимков (SI) и MVCO. SI — это метод многоверсионного управления параллелизмом, широко используемый благодаря хорошей производительности и сходству с сериализуемостью (1SER) во многих аспектах. Теория MVCO, описанная выше в работе (Raz 1993b), позднее используется в (Fekete et al. 2005) и других статьях, посвященных SI, например, (Cahill et al. 2008); см. также "Making snapshot isolation serializable и ссылки на него", для анализа конфликтов в SI с целью обеспечения сериализуемости. Метод, представленный в (Cahill et al. 2008), — сериализуемая изоляция моментальных снимков (SerializableSI) — модификация SI с низкой накладной стоимостью, демонстрирующая хорошие результаты производительности по сравнению с SI, с незначительными издержками на обеспечение сериализуемости. Другой подход, объединяющий SI с MVCO (COSI), также обеспечивает сериализуемость SI, при относительно низкой накладной стоимости, аналогично объединению обобщенного алгоритма CO с механизмами единой версии. Более того, полученная комбинация, COSI, будучи совместимой с MVCO, позволяет базам данных, соответствующим COSI, взаимодействовать и прозрачно участвовать в CO-решении для распределенной/глобальной сериализуемости (см. ниже). Помимо накладных расходов, необходимо также количественно сравнивать поведение протоколов. С одной стороны, все сериализуемые расписания SI могут быть преобразованы в MVCO с помощью COSI (при необходимости с возможными задержками фиксации) без отката транзакций. С другой стороны, известно, что SerializableSI без необходимости откатывает и перезапускает определенный процент транзакций даже в сериализуемых расписаниях SI.