СУБД ЛИНТЕР. Технический обзор



Режимы транзакций СУБД ЛИНТЕР


В ЛИНТЕР реализованы три основных стратегии (или режима) работы транзакций.

  • Оптимистичная (Optimistic Concurrency Control).
  • Модификации данных, сделанные внутри одной транзакции, не поступают в базу, однако, поступают в системный журнал вместе со старым образом данных. При фиксации изменений транзакции система начинает перенос изменений из журнала в базу данных.

    При переносе очередного изменения ЛИНТЕР сравнивает старый образ модифицируемых данных из журнала и из базы. Если образы совпадают (данные никто не менял), то это очередное изменение попадает в базу, в противном случае (кто-то уже успел раньше изменить и зафиксировать данные) откатывается вся транзакция, а приложению возвращается соответствующее сообщение.

    Этот режим работы транзакций при всех его недостатках обладает существенным достоинством - скоростью. Данные не блокируются, каждая задача работает исходя из оптимистичного предположения о том, что кроме неё с базой не работает никто, и никто никого не ждёт. А при возникшей коллизии транзакцию можно и повторить. Что очень удобно особенно в системах массового обслуживания.

  • Пессимистичная (Pessimistic).
  • Это классический режим работы транзакций. Все изменения поступают сразу в базу данных, а также в системный журнал. Однако эти изменения не видны другим транзакциям до тех пор, пока не пройдет её фиксация. До тех пор работает аппарат блокировок, запрещающий модификацию читаемых или чтение модифицируемых данных.

  • Стратегия read-only.
  • Удобный режим транзакций, которые не делают никаких изменений в базе данных, их функция – только чтение (например, отчёты за день, сведение данных для анализа и т.п.). Обычно такие транзакции вовлекают в свою работу большие объёмы данных, так что блокировка всех используемых данных может привести к длительной задержке прочих транзакций.

    В ЛИНТЕР транзакция read-only не блокирует данные. Но при её появлении, все другие транзакции, изменяя данные, оставляют (для неё и ей подобных) тот образ, который имели данные, когда транзакция read-only стартовала.




    Содержание  Назад  Вперед