Работает ли CHECKPOINT так же, как COMMIT в TSQL? - PullRequest
8 голосов
/ 08 июня 2009

Я обычно использую полностью явные транзакции в моих хранимых процессах (BEGIN TRANSACTION .... COMMIT). Я только что наткнулся на старый, который вместо этого использует «CHECKPOINT» в определенных местах кода.

Это не будет делать то же самое, верно? Даже если база данных находится в простом режиме, все это будет по-прежнему выполняться как одна большая транзакция, даже если в центре находится куча CHECKPOINTS?

Ответы [ 2 ]

11 голосов
/ 08 июня 2009

Checkpoint просто записывает грязные страницы на диск, совсем не то же самое. http://msdn.microsoft.com/en-us/library/ms188748.aspx

7 голосов
/ 08 июня 2009

номер

CHECKPOINT отличается и не зависит от фиксации / отката.

В этой статье демонстрируется « Основы ввода-вывода SQL Server 2000 » (все еще в порядке для SQL Server 2005 и т. Д.).

  • Вы можете проверить и записать на диск, но затем выполнить откат

  • BEGIN / COMMIT не имеет ничего общего с моделью восстановления (полная, простая, с массовой регистрацией). TXN должен либо завершиться, либо завершиться с ошибкой как единое целое.

  • В случае, например, сбоя питания, данные могут быть на диске из-за CHECKPOINT, но не переданы, поэтому выполняется откат при запуске базы данных.

В прежние времена он использовался для попытки "очистить" журнал подтвержденных записей для простой модели восстановления. CHECKPOINT отбрасывает их. Для модели полного восстановления вам понадобится РЕЗЕРВНЫЙ ЛОГ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...