Horsun Vlad wrote:

Самая последняя закоммиченная. Т.е. так которая должна быть в базе
при сносе сервера. При этом не хранить указатели на предыдущие
версии.


    Не, так не пойдёт. Распиши что и как сохранять на примере с 3-мя
тр-циями, каждой из которых видна своя версия

Стартует первая транзакция и обновляет запись. Версия пишется в память.
Стартует вторая транзакция делает селект. Как обычно.
Первая транзакция коммитится. При этом запись из файла переносится
в память, а из памяти пишется на диск.
и т.д.

   Чем вр.файл отличается от основного ?

Тем что версии не разманы по всему файлу бд. И могут чистится
по коммитам без свипа.


    А с какой стати они не будут размазаны по вр.файлу ? Или для каждой
тр-ции и каждой таблицы - свой файл ?

Количество версии обычно должно быть намного меньше чем обычных
записей в БД. Поэтому для аналоги свипа достаточно будет обработать
этот временный файл небольших размеров.

Сборка мусора удаляет не только старые
версии записей, она также удаляет ненужные блобы и ключи индексов

С индексами конечно есть проблема. Сейчас версии тоже вставляются в индекс.
Если их не вставлять то надо как решить проблему выборки незакоммиченных
версий.

--
--- Home Page http://ok.novgorod.net/ap ---


Ответить