LINUX.ORG.RU

История изменений

Исправление 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-енный файл, либо кольцевой буфер в разделе диска.