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


Менеджер блокировок как источник конкуренции


В этом разделе мы объясним, почему при типичных рабочих нагрузках OLTP в традиционных системах менеджер блокировок является одним из первых конфликтных компонентов и препятствием на пути к масштабируемости.

Типичная рабочая нагрузка OLTP состоит из большого числа параллельных кратковременных транзакций, каждая из которых обращается к небольшой части (от одной до десяти записей) крупного набора данных. Каждая транзакция независимо выполняется в отдельном потоке управления. Для обеспечения целостности данных транзакции входят в большое число критических участков, координирующих доступ к совместно используемым ресурсам. Одним из совместно используемых ресурсов являются блокировки. Менеджер блокировок отвечает за поддержку изоляции параллельно выполняемых транзакций, обеспечивая транзакциям интерфейс для запросов (request), повышения уровня (upgrade) и освобождения (release) блокировок. Скрытым образом менеджер блокировок также обеспечивает получение транзакциями соответствующих блокировок намерений (intention lock) и выполняет действия для предотвращения и выявления синхронизационных тупиков (deadlock).

Опишем менеджер блокировок сервера хранения данных Shore-MT [14]. Хотя детали реализации менеджеров блокировок в коммерческих системах в основном неизвестны, мы полагаем, что они устроены аналогичным образом. Они могут различаться только реализацией защелок. В Shore-MT для этого используется допускающий вытеснения (preemption-resistant) вариант MCS-спинлоков с очередями. (MCS происходит от фамилий авторов алгоритма – Меллора-Крамми (Mellor-Crummey) и Скотта (Scott); см. их оригинальную статью. Прим. переводчика.) При использовании аппаратуры нашего испытательного стенда Sun Niagara II и при той загрузке процессора, которая применялась в нашем исследовании (<120%), реализации на основе спинлоков превосходят про производительности любое другое известное нам решение, включая блокирование (blocking) [12].

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


- Начало -  - Назад -  - Вперед -