MVCC Snapshot

Registered by Roman Tsisyk

Есть следующий алгоритм для оптимизации снашота.
Для каждого спейса:
1. Создаем MVCC индекс, в котором будут хранится все необходимые данные для итерации по индексу с LSN на момент создания (некий SNAPSHOT индекса)
2. Обходим индекс, сохраняем таплы в снапшот, сохраняем LSN момента старта
3. Дропаем mvcc индекс
4. Переходим к следующему спейсу

В итоге получаем снапшот, в котором consistent состояние для каждого спейса.
При накатке WAL скипаем по LSN.
Pros:
 - Консистентное состояние для каждого спейса
 - copy-on-write per space (не копируются другие спейсы, Lua и прочее)
 - Overhead максимум на размер индекса одного спейса и измененных таплов (сейчас на все индексы и весь salloc)
 - уход от fork, возможность более плотно использовать треды

Cons:
 - Консистетное состояние будет для min(space[].lsn)

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
Drafting
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.