Выполнение транзакций, ориентированное на данные

       

Вставки и удаления записей


Для поиска и обновления записей в DORA требуется использование только локального механизма блокировок в каждом исполнителе. Однако при параллельном выполнении операций вставки и удаления записей (выполняемых разными исполителями), тем не менее, требуется централизованная координация их доступа к слотам одной и той же страницы.

Другими словами, при удалении записи можно безопасно обойтись без централизованного управления параллелизмом по отношению ко всем операциям чтения этой записи, поскольку все поиски этой записи будут выполняться последовательно исполнителем, ответственным за соответствующий набор данных. Но имеется проблема со вставками записей другими исполнителями. Проблему может вызвать следующее чередование операций транзакции T1, выполняемой исполнителем E1, и транзакции T2, выполняемой исполнителем E2. T1 удаляет запись R1. T2 зондирует страницу, в которой находилась запись R1, и обнаруживает, что соответствующий слот занят. T2 вставляет свою запись. Затем T1 аварийно завершается. Ее откат невозможно выполнить, поскольку нельзя заново использовать слот, который теперь используется транзакцией T2. Это физический конфликт (T1 и T2 не намереваются обращаться к одним и тем же данным), который обычно предотвращается блокировками на уровне записей, и который DORA обязана разрешать.

Чтобы избежать этой проблемы, операции вставки и удаления записей блокируют RID (record identifier – идентификатор записи и соответствующий ему слот) через централизованный менеджер блокировок. Хотя централизованный менеджер блокировок может служить источником конкуренции, обычно блокировки на уровне записи, получение которых требуется для выполнения операций вставки и удаления записей, не конкурируют, и они составляют лишь небольшую часть от общего числа блокировок, которые потребовались бы в традиционной системе. Например, тразакциям Payment требуется получить всего одну блокировку (для вставки записи в таблицу History) вместо 19 блокировок, которые потребовались бы при их выполнении в традиционной системе.



Содержание раздела