История изменений
Исправление Deleted, (текущая версия) :
Без COW необходимо дополнительно лениво/асинхронно дописывать UNDO.
На всякий чуть уточню.
Если в реализации undo не совмещен с redo, т.е. если это физически разные сущности, то «дозапись» undo - достаточно условный процесс, который непосредственно связан с тем, как БД отслеживает использование MVCC-снимков и что предоставляет (например, могут ли хранимки открывать читать/открывать произвольные таблицы с неизвестным во время компиляции именами, или множество этих таблиц как-то фиксируется на старте).
Проще говоря, БД может отслеживать использование самого старого MVCC-снимка и не писать на диск undo с изменениями раньше него. Например, накапливать в памяти undo для каждого table space, инициировать запись только при нехватке памяти, а перед записью отфильтровывать ненужное (писать iov-вектором).
Хотя в реальности это часто просто append в mmap-енный файл, либо кольцевой буфер в разделе диска.
Исправление Deleted, :
Без COW необходимо дополнительно лениво/асинхронно дописывать UNDO.
На всякий чуть уточню.
Если в реализации undo не совмещен с redo, т.е. если это физически разные сущности, то «дозапись» undo - достаточно условный процесс, который непосредственно связан с тем, как БД отслеживает использование MVCC-снимков и что предоставляет (например, могут ли хранимки открывать читать/открывать произвольные таблицы с неизвестным во время компиляции именами, или множество этих таблиц как-то фиксируется на старте).
Проще говоря, БД может отслеживать использование самого старого MVCC-снимка и не писать на диск undo с изменениями раньше него. Например, накапливать в памяти undo для каждого table space, но перед записью выбрасывать (писать iov-вектором). Хотя в реальности это часто просто append в mmap-енный файл, либо кольцевой буфер в разделе диска.
Исходная версия Deleted, :
Без COW необходимо дополнительно лениво/асинхронно дописывать UNDO.
На всякий чуть уточню.
Если в реализации undo не совмещен с redo, т.е. если это физически разные сущности, то «дозапись» undo - достаточно условный процесс, который непосредственно связан с тем, как БД отслеживает использование MVCC-снимков и что предоставляет (например, могут ли хранимки открывать читать/открывать произвольные таблицы с неизвестным во время компиляции именами, или множество этих таблиц как-то фиксируется на старте).
Проще говоря, БД может отслеживать использование самого старого MVCC-снимка и не писать на диск undo с изменениями раньше него. Хотя в реальности это часто просто append в mmap-енный файл, либо кольцевой буфер в разделе диска.