Поскольку каждая транзакция записывается в журнал транзакций, полная модель восстановления поддерживает восстановление к некоторому моменту времени, т.е. база данных, которая полностью журнализируется, может бы восстановлена к любому моменту времени. Но это также означает, что журнал транзакций неизбежно должен быть достаточно большим, чтобы обеспечивать запись всех транзакций, пока не будет выполнен бэкап журнала. Если приложение выполняет множество транзакций, то существует опасность переполнения журнала транзакций. Когда журнал транзакций заполняется, база данных перестает принимать транзакции до тех пор, пока не будет сделан бэкап журнала транзакций, увеличен размер журнала транзакций, или журнал не будет усечен. Следовательно, при использовании для базы данных полной модели восстановления, вам вам необходимо делать резервные копии журнала достаточно часто, чтобы удалять завершенные транзакции до того, как журнал транзакций заполнится.
Помимо транзакций вставки и обновления, в журнал записывается множество информации, связанной с другими операциями, подобными созданию/изменению индекса и массовой загрузки. Если вы обнаружили, что ваш журнал транзакций заполняется вследствие операций с индексами или массовой загрузки (например, SELECT INTO), вы можете рассмотреть вариант перехода на модель восстановления с неполным протоколированием, пока эти операции выполняются.
Модель восстановления с неполным протоколированием
Модель восстановления с неполным протоколированием минимизирует использование пространства журнала транзакций при операциях с неполным протоколированием, подобных BULK INSERT, SELECT INTO или CREATE INDEX. Функцилнальность этой модели подобна полной модели восстановления за исключением того, что записи в журнал транзакции минимально протоколируются при выполнении указанных операций. Минимальное протоколирование помогает поддерживать журнал меньших размеров, но при этом журнализируется не так много информации.
Модель восстановления с неполным протоколированием улучшает производительность операций с загрузкой больших объемов данных посредством сокращения количества журнализируемой информации. Кроме того, поскольку транзакции с неполным протоколированием не полностью журнализируются, это сокращает количество места при записи в журнал транзакций, что уменьшает шансы переполнения журнала транзакций. Поскольку операции с неполным протоколированием минимально журнализируются, это оказывает влияние на восстановление к определенному моменту времени.
Восстановление к определенному моменту времени все еще может быть выполнено при использовании модели восстановления с неполным протоколированием. Если база данных повреждается во время выполнения операции с минимальным протоколированием, базу данных можно восстановить только к последнему бэкапу журнала транзакций, созданному до первой операции с минимальным протоколированием. Если бэкап журнала транзакций содержит операции с неполным протоколированием, опции с остановкой не могут использоваться. Если операции с минимальным протоколированием вообще не выполнялись во время использования модели восстановления с неполным протоколированием, то вы все еще можете выполнять восстановление к определенному моменту времени так же, как и для полной модели восстановления.