Прежде чем какое-либо изменение будет применено к фактическим страницам данных, запись об этом сначала добавляется в надежный последовательный файл журнала. При фиксации должна быть надежно записана только запись журнала — страница данных может быть сброшена позже — что позволяет избежать необходимости синхронной очистки каждой измененной страницы данных при каждой фиксации.
Пример
BEGIN;
INSERT INTO orders (id, customer_id) VALUES (1, 42);
SAVEPOINT before_risky_step;
UPDATE inventory SET stock = stock -1WHERE product_id =999; -- fails: constraint violationROLLBACKTOSAVEPOINT before_risky_step; -- undoes only the failed stepCOMMIT; -- the order insert is still committed
Итог
Прежде чем какое-либо изменение будет применено к фактическим страницам данных, запись об этом сначала добавляется в надежный последовательный файл журнала.
Что такое журналирование с упреждающей записью и почему оно делает … · Sobeso