Допустим, у нас есть ниже код SQL:
BEGIN TRAN
UPDATE checking
SET Balance = Balance - 1000
WHERE Account = 'Sally' // original balance is 2000
--------------a checkpoint occurs ---------
--------------System Failure---------------
UPDATE savings
SET Balance = Balance + 1000
WHERE Account = 'Sally'
COMMIT TRAN
скажем, контрольная точка возникает после того, как проверка на sally была минус -1000, и пусть обновленная запись находится на странице 4 (в памяти), поскольку она еще не была зафиксирована, поэтому журнала не будет запись в буфере журнала, поэтому на диске не будет соответствующей записи журнала (.ldf). и если сразу происходит сбой системы. После перезапуска SQL-сервера, как он узнает, как восстановить баланс записи (в настоящее время 1000) до исходного значения (баланс 2000), поскольку в файле .ldf нет записи журнала? Поскольку для создания записи журнала в памяти требуется коммит dba.stackexchange.com/a/76080/184172 В ответе говорится, что:
Коммит добавляет новую запись журнала, описывающую COMMIT, в журнал, в память