Процесс контрольной точки

 

Процесс контрольной точки позволяет уменьшить простой в случае сбоя в работе сервера.

Благодаря этому процессу количество страниц в буферном кэше, которые не были записаны на диск, минимально.

 

Процесс контрольной точки выполняется сервером в следующих случаях:

если используется оператор CHECKPOINT;

если используется оператор ALTER DATABASE;

при корректном завершении работы экземпляра SQL Server;

при автоматическом запуске процесса контрольной точки (выполняется периодически в зависимости от количества записей в активной части журнала транзакций).

 

Процесс контрольной точки записывает наименьший LSN, необходимый для успешной отмены невыполненной транзакции. Этот номер называется минимальным LSN (MinLSN).

 

Он определяется либо наименьшим LSN самой ранней активной транзакции, либо началом самой ранней транзакции репликации, при которой данные не были получены всеми серверами-подписчиками, либо началом процесса контрольной точки.

 

Часть журнала транзакций от MinLSN до последней записи является активной.

Она необходима для успешной отмены транзакций.

 

При запуске SQL Server (в обычном режиме или после сбоя), в каждой БД начинается процесс восстановления.

Он проверяет журнал транзакций на наличие завершенных транзакций, результаты которых не были записаны на диск, и записывает их.

Он также ищет неподтвержденные транзакции и проверяет, чтоб их результаты не были записаны на диск, в противном случае все изменения удаляются.

MinLSN указывает наименьший LSN, который должен при этом просматривать SQL Server.

 

Записи о транзакциях с номерами меньше MinLSN не являются активными - процесс контрольной точки гарантирует, что они уже записаны на диск.

Для повторного использования пространства, занимаемого этими записями, они должны быть удалены из файла журнала транзакций, что достигается усечением журнала.

 

Минимальной единицей, которая удаляется при усечении журнала, является виртуальный файл журнала транзакций.

Но если часть виртуального файла является частью активного журнала, его удалять нельзя.

При использовании простой модели восстановления (Simple Recovery model) процесс контрольной точки просто очищает виртуальные файлы, целиком занятые неактивной частью журнала, и они потом используются повторно.

 

При использовании модели восстановления отдельных операций (Full Recovery model) или модели восстановления результатов импорта (Bulk-Logged Recovery model) администратору необходимо предварительно создать копию журнала транзакций, чтобы затем можно было удалить его неактивную часть.

 

Журнал транзакций после усечения неактивной части

 

 

 

Процесс контрольной точки освобождает пространство в физическом файле журнала транзакций, и это пространство используется логическим файлом, после того как он достигнет конца последнего физического файла.

Когда это происходит, он вновь возвращается в начало первого физического файла (при условии, что первый виртуальный файл удален).

 

Если первый виртуальный файл не был удален и не установлено автоматическое увеличение размера журнала транзакций (или если весь диск заполнен), SQL Server не может продолжать работать.

 

Возвращение логического журнала в начало первого физического файла называется циклическим обновлением при ведении журнала.

 

 

Циклическое обновление при ведении журнала транзакций