Основные сведения о производительности восстановления в SQL Server

В данном разделе основное внимание уделяется восстановлению после сбоя. Однако при этом не исключается возможность оптимизации восстановления из резервной копии.

Время, необходимое для восстановления, определяется объемом выполненных с момента последней контрольной точки операций, а также количеством активных транзакций, совершенных к моменту потери данных. Для задания приблизительного максимального времени восстановления каждой базы данных в SQL Server используется параметр конфигурации recovery interval. Параметр recovery interval задает частоту создания контрольных точек. Для системы оперативной обработки транзакций (OLTP) (при использовании коротких транзакций) параметр recovery interval является основным фактором, определяющим время восстановления.

После установки SQL Server параметру recovery interval присваивается значение 0. Если параметр recovery interval имеет значение по умолчанию и при этом отсутствуют длительные транзакции, то время восстановления одной базы данных не должно превышать 1 минуты. При восстановлении по журналу, если во время потери данных выполнялись длительные транзакции, то время восстановления определяется временем, необходимым для отката этих транзакций. Однако в SQL Server 2005 и более поздних версиях база данных остается доступной во время стадии отката при восстановлении после сбоя или переходе на другой ресурс при зеркальном отображении базы данных (функция, называемая быстрым восстановлением).

Если восстановление базы данных выполняется гораздо дольше 1 минуты, но при этом параметр recovery interval имеет значение 0 и отсутствуют длительные транзакции, требующие отката, то для устранения проблем с производительностью рекомендуется обратиться к основному поставщику услуг поддержки.

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

Если значение параметра recovery interval отличается от значения по умолчанию, то время восстановления базы данных увеличивается пропорционально указанному значению. Например, если значение параметра recovery interval равно 10, то время выполнения восстановления увеличится приблизительно в 10 раз по сравнению со временем, соответствующим значению по умолчанию.

При увеличении объема журнала рекомендуется использовать большой шаг для обеспечения более быстрого запуска SQL Server. Чем меньше шаг, используемый для записи в журнал, тем больше времени требуется SQL Server для загрузки.

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

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

Дополнительные сведения о способах ускорения процесса восстановления данных из резервных копий при использовании модели полного восстановления см. в разделе Сокращение времени восстановления базы данных из копии.