CHECKPOINT (Transact-SQL)
Записывает все «грязные» страницы в текущей базе данных на диск. «Грязными» страницами являются страницы данных, введенные в буферный кэш и измененные, но еще не записанные на диск. Контрольные точки экономят время во время последующего восстановления при помощи создания точки, в которой все «грязные» страницы гарантированно записываются на диск.
Синтаксис
CHECKPOINT [ checkpoint_duration ]
Аргументы
checkpoint_duration
Задается запрашиваемое количество времени в секундах для завершения контрольной точки. Если задан аргумент checkpoint_duration, компонент SQL Server Database Engine пытается выполнить контрольную точку в течение запрашиваемого периода времени. Аргумент checkpoint_duration должен быть выражением типа данных int больше нуля. Если этот аргумент опущен, компонент SQL Server Database Engine автоматически настраивает длительность выполнения контрольной точки таким образом, чтобы как можно больше снизить влияние на производительность приложений базы данных.Примечание В SQL Server 2000 длительность процесса обработки контрольной точки рассчитывалась на основе параметра RECOVERY INTERVAL процедуры sp_configure.
Замечания
Из соображений производительности компонент Database Engine выполняет изменения страниц базы данных в памяти и не записывает страницу на диск после каждого изменения. Однако компоненту Database Engine необходимо при выполнении контрольной точки периодически записывать эти «грязные» страницы на диск. При записи «грязных» страниц на диск создается известная хорошая точка, из которой компонент Database Engine может начать применение изменений, содержащихся в журнале, во время восстановления после непредвиденного отключения или аварии. Дополнительные сведения см. в разделе Контрольные точки и активная часть журнала.
Контрольные точки могут возникать одновременно в любом количестве баз данных.
Компонент Database Engine не может выполнить восстановление из прерванной контрольной точки. Если контрольная точка прервана и необходимо восстановление, компонент Database Engine должен начать восстановление из предыдущей успешной контрольной точки.
События, которые вызывают появление контрольных точек
Перед резервным копированием базы данных компонент Database Engine автоматически выполняет контрольную точку, так что все изменения страниц базы данных содержатся в резервной копии. Кроме того, контрольные точки автоматически возникают, когда выполняются какие-либо из следующих условий.
Активная часть журнала превышает объем, который сервер может восстановить за время, указанное в параметре конфигурации сервера recoveryinterval.
Журнал заполнен на 70 процентов и база данных находится в режиме усечения журнала.
База данных находится в режиме усечения журнала, если для обоих из этих условий установлено TRUE. База данных использует простую модель восстановления и после выполнения последней инструкции BACKUP DATABASE, ссылающейся на базу данных, возникает одно из следующих событий:
в базе данных выполняется операция с минимальной регистрацией, например выполняется операция массового копирования с минимальной регистрацией или инструкция WRITETEXT с минимальной регистрацией;
выполняется инструкция ALTER DATABASE, добавляющая или удаляющая файл в базе данных;
Кроме того, остановка сервера вызывает контрольную точку в каждой базе данных сервера. Контрольные точки выполняются во всех базах данных при использовании следующих методов остановки сервера SQL Server:
Использование диспетчера конфигурации SQL Server.
использование среды Среда SQL Server Management Studio;
использование инструкции SHUTDOWN;
Примечание |
---|
Инструкция SHUTDOWN WITH NOWAIT останавливает сервер SQL Server без выполнения контрольных точек в каждой базе данных. В результате этого при последующем перезапуске может понадобиться большее время, чем обычно, для восстановления базы данных на сервере. |
использование команды net stop mssqlserver в окне с командной строкой;
использование служб на панели управления, выбор mssqlserver и щелчок Стоп.
Перевод экземпляра в режим «вне сети» в кластере.
Факторы, влияющие на длительность операций выполнения контрольных точек
Количество времени, необходимое для операции выполнения контрольной точки, увеличивается с возрастанием количества «грязных» страниц, которые необходимо записать операции. Для снижения влияния на производительность других приложений SQL Server по умолчанию настраивает частоту записей, производимых операцией выполнения контрольной точки. SQL Server использует такую стратегию для автоматических контрольных точек и для инструкций CHECKPOINT, не задающих значения checkpoint_duration. Уменьшение частоты записи увеличивает время, необходимое для завершения операции выполнения контрольной точки.
Аргумент checkpoint_duration может использоваться для запроса завершения операции выполнения контрольной точки за определенный промежуток времени. Влияние на производительность использования аргумента checkpoint_duration зависит от количества «грязных» страниц, уровня активности в системе и фактической задаваемой величины длительности. Например, если обычно для завершения операции выполнения контрольной точки необходимо 120 секунд, задание для аргумента checkpoint_duration величины 45 секунд ведет к тому, что серверу SQL Server будет необходимо выделить контрольной точке большее количество ресурсов, чем количество, задаваемое по умолчанию. И наоборот, в результате задания для аргумента checkpoint_duration 180 секунд SQL Server выделяет меньшее количество ресурсов, чем количество по умолчанию. Меньшее значение аргумента checkpoint_duration увеличивает объем ресурсов, выделяемых контрольной точке, а большее значение аргумента checkpoint_duration уменьшает объем выделяемых ресурсов. SQL Server всегда, если возможно, завершает обработку контрольной точки и инструкция CHECKPOINT возвращается сразу же по завершении обработки контрольной точки. Следовательно, в некоторых случаях выполнение контрольной точки может завершиться быстрее, чем заданный период времени, или выполняться дольше этого периода.
Разрешения
Разрешения CHECKPOINT по умолчанию предоставляются членам предопределенной роли сервера sysadmin и предопределенных ролей базы данных db_owner и db_backupoperator, и эти разрешения передаваться не могут.
См. также