Параметр recovery interval

Параметр recovery interval используется, чтобы установить максимальное количество минут для каждой базы данных, необходимое MicrosoftSQL Server для их восстановления. При каждом запуске экземпляра SQL Server он производит восстановление каждой базы данных, причем происходит откат незафиксированных транзакций и накат транзакций, которые были зафиксированы, но без записи соответствующих изменений на диск на время остановки экземпляра SQL Server. Этот параметр конфигурации устанавливает верхний предел срока, необходимого для восстановления любой базы данных. Значение по умолчанию 0, что соответствует автоматической настройке, которую выполняет SQL Server. На практике это означает время восстановления менее минуты и создание контрольных точек приблизительно раз в минуту для активно используемых баз данных.

Параметр recovery interval устанавливает, когда SQL Server выдаст контрольную точку в каждой базе данных. Контрольные точки делаются для каждой отдельной базы данных. В контрольной точке SQL Server должен убедиться, что все данные журнала и все измененные страницы сброшены из памяти на диск. Это ограничивает время, необходимое для восстановления, ограничивая количество транзакций, для которых необходимо произвести накат, чтобы убедиться, что они на диске. Изменения, сделанные до контрольной точки, накатывать не нужно, ибо они уже были сброшены на диск в контрольной точке.

Параметр recovery interval не влияет на количество времени, которое необходимо, чтобы отменить длительные транзакции. Например, если длительной транзакции нужно два часа, чтобы произвести обновление базы данных до того, как сервер станет недоступен, то действительному восстановлению потребуется значительно больше времени, чем обозначено параметром recovery interval, чтобы откатить длинную транзакцию.

SQL Server оценивает, какое количество изменений данных он может накатить в течение интервала восстановления. Обычно SQL Server делает контрольную точку в базе данных, когда количество сделанных в ней с момента создания последней контрольной точки изменений достигает количества, для которого SQL Server предположительно может произвести накат за интервал восстановления. Иногда SQL Server делает контрольную точку, когда журнал заполняется на 70%, если это меньше предполагаемого числа.

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

Следует оставлять значение recovery interval равным 0 (самонастройка), если только не возникает снижение производительности, вызванное тем, что контрольные точки создаются достаточно часто. В этом случае следует попробовать постепенно, с небольшим шагом, увеличивать значение.

Параметр recovery interval относится к расширенным возможностям. Если для изменения настроек используется хранимая системная процедура sp_configure, параметр recovery interval можно изменить только в случае, если параметр show advanced options установлен в 1. Настройка начинает действовать немедленно без перезапуска сервера.

Чтобы установить значение recovery interval, большее 60 (минут), необходимо выполнить инструкцию RECONFIGURE WITH OVERRIDE.