Оптимизация приложений для работы с СУБД InterBase - Многоверсионная архитектура базы данных

ОГЛАВЛЕНИЕ

Многоверсионная архитектура базы данных

Важно знать, что сервер InterBase/FireBird всегда создает множество копий записи, когда она со временем изменяется. В этом плане СУБД работает как Система Контроля Версий CVS (Concurrent Versioning System), создавая новую копию записи каждый раз, когда различные транзакции ее (запись) изменяют. Данный механизм необходим серверу для того, чтобы транзакции могли определять, какую версию записи им необходимо видеть.

Работает этот механизм следующим образом. Когда стартует каждая из транзакций, они по порядку получают свой внутренний уникальный номер TRANSACTION_ID. Также транзакция обладает копией внутренней структуры, называемой Transaction Inventory Page (TIP), по которой она получает информацию о состоянии других транзакций (committed, rolled back и т.д.) на момент ее старта. Когда транзакция воздействует на строку в таблице (изменяя, добавляя или удаляя и т.д.), создается новая версия строки и помечается уникальным номером породившей ее транзакции. Теперь, когда другая транзакция выполняет запрос на выборку (SELECT), который возвращает эту строку данных, сервер сравнит режим изоляции транзакции — исполнителя запроса с состоянием транзакций, затронувших каждую версию строки, захватит и выдаст наиболее новую версию строки из всех видимых версий для транзакции — исполнителя запроса на выборку (если таковые имеются).