Управление транзакциями и параллелизм
Управление транзакциями и контроль параллелизма позволяют базе данных корректно выполнять множество параллельных транзакций и выдерживать сбои, гарантируя свойства атомарности, согласованности, изоляции и долговечности (ACID).
Definition
Транзакция — это последовательность операций с базой данных, выполняемых как единая логическая единица, которая является атомарной, сохраняющей согласованность, изолированной от параллельных транзакций и долговечной после фиксации; управление транзакциями — это набор механизмов, которые обеспечивают эти свойства в условиях параллелизма и сбоев.
Scope
Эта область охватывает транзакцию как единицу работы и механизмы, обеспечивающие корректное выполнение параллельных, подверженных сбоям операций: свойства ACID; сериализуемость как критерий корректности для параллелизма; протоколы блокировки, временных меток и многоверсионности, которые обеспечивают ее соблюдение; более слабые уровни изоляции, которые обменивают согласованность на производительность; а также методы журналирования и восстановления, которые обеспечивают атомарность и долговечность при сбоях. Она исключает распределенную фиксацию между несколькими узлами, которая рассматривается в области распределенных и параллельных баз данных.
Sub-topics
Core questions
- Что гарантируют свойства ACID и почему они необходимы?
- Что делает параллельное расписание корректным, то есть сериализуемым?
- Как протоколы блокировки, временных меток и многоверсионности обеспечивают сериализуемость?
- Как журналирование и восстановление восстанавливают согласованное состояние после сбоя?
- Как более слабые уровни изоляции обменивают согласованность на параллелизм?
Key concepts
- транзакция и фиксация/откат
- свойства ACID
- сериализуемость и граф предшествования
- двухфазная блокировка
- упорядочение по временным меткам
- многоверсионный контроль параллелизма
- обнаружение и предотвращение взаимоблокировок
- журналирование с предварительной записью
- уровни изоляции
Key theories
- Свойства ACID
- Атомарность (выполнение «все или ничего»), согласованность (сохранение ограничений целостности), изоляция (параллельные транзакции кажутся выполняющимися по отдельности) и долговечность (зафиксированные эффекты сохраняются после сбоев) вместе определяют корректное транзакционное поведение.
- Сериализуемость
- Параллельное расписание корректно, если оно эквивалентно некоторому последовательному выполнению; конфликтная сериализуемость, проверяемая с помощью графа предшествования (сериализации), является практическим критерием, который обеспечивают протоколы контроля параллелизма.
- Контроль параллелизма и восстановление
- Методы блокировки, упорядочения по временным меткам и многоверсионности предотвращают несериализуемые чередования, в то время как журналирование с предварительной записью и алгоритмы восстановления гарантируют атомарность и долговечность — две составляющие корректной обработки транзакций.
Clinical relevance
Управление транзакциями делает базы данных надежными для работы с деньгами и записями: оно гарантирует, что банковский перевод никогда не списывает средства с одного счета без зачисления на другой, что авиакомпания никогда не бронирует одно и то же место дважды при одновременных запросах, и что зафиксированные данные сохраняются после сбоев, что лежит в основе всех надежных транзакционных систем.
History
Концепция транзакций и свойства ACID были формализованы в IBM System R в 1970-х годах; Эсваран и коллеги (1976) установили понятия согласованности и блокировки, Джим Грей определил транзакции и восстановление, а Бернштейн, Хадзилакос и Гудман (1987) систематизировали теорию сериализуемости. Вклад Грея в обработку транзакций принес ему премию Тьюринга.
Key figures
- Jim Gray
- Philip Bernstein
- Andreas Reuter
Related topics
Seminal works
- gray1992
- bernstein1987
- eswaran1976
Frequently asked questions
- Что означает, что расписание транзакций является сериализуемым?
- Параллельное расписание является сериализуемым, если его общий эффект идентичен выполнению тех же транзакций одна за другой в некотором порядке. Сериализуемость — это золотой стандарт критерия корректности: хотя транзакции чередуются для повышения производительности, результат таков, как если бы они выполнялись последовательно, поэтому ни одна транзакция не видит несогласованного промежуточного состояния.
- Почему допускаются более слабые уровни изоляции, если они могут приводить к аномалиям?
- Обеспечение полной сериализуемости имеет свою цену в производительности из-за конфликтов блокировок и откатов. Многие приложения могут допускать определенные аномалии в обмен на более высокий параллелизм, поэтому стандарт SQL определяет более слабые уровни изоляции (чтение зафиксированных данных, повторяющееся чтение и так далее), которые позволяют разработчикам сознательно обменивать некоторую изоляцию на пропускную способность.