Идея использования версий для организации
Идея использования версий для организации управления параллельными транзакциями появилась достаточно давно. Первые работы, посвященные управлению параллельными транзакциями на основе многоверсионности (MultiVersion Concurrency Control, MVCC), появились в конце 70-х – начале 80-х гг. Исходные статьи [,,] были написаны Ридом и коллективом авторов во главе с Байером. Развили эту идею работы Стернса и Розенкранца [], а также Бернштейна и Гудмена []. Настоящая статья представляет собой обзор основных алгоритмов управления параллельными транзакциями, основанных на концепции версионности.
Основная идея MVCC заключается в том, что в базе данных допускается существование нескольких «версий» одного и того же элемента данных. Это позволяет улучшить ряд характеристик СУБД, наиболее важных для приложений, относящихся к следующим категориям:
- Приложения, для которых требуется эффективное выполнение запросов, не изменяющих данные. Чаще всего подобные требования исходят от Web-приложений. Специфика такого рода систем в том, что в подавляющем большинстве транзакций осуществляется лишь выборка данных. При этом система должна минимизировать время ожидания результата пользователем.
- Приложения, ориентированные на поддержку совместной работы. В таких системах для многих людей требуется одновременное выполнение операций чтения и изменения одних и тех же данных. В этом случае использование обычного двухфазного протокола синхронизации транзакций может привести к тому, что почти любое действие будет вызывать появление тупика.
- Приложения реального времени, для которых требуется быстрый отклик и должна поддерживаться высокая степень параллельности. В качестве примера такого приложения рассмотрим систему резервирования авиабилетов. В такой системе число параллельно выполняемых транзакций может быть весьма велико. Типичная транзакция для такой системы проверяет наличие свободных мест на некоторый рейс. Заметим, что конфликт двух транзакций (в одной из которых изменяется количество свободных мест, а во второй выясняется, есть ли еще свободные места на рейс) не обязательно является серьезным.
Содержание Назад Вперед