Управление ускоренным восстановлением баз данных
применимо к следующим версиям: SQL Server 2019 (15.x) и более поздних версий
В этой статье описано, как включить и отключить ускоренное восстановление базы данных (ADR) с помощью Transact-SQL (T-SQL) в SQL Server 2019 (15.x) и более поздних версий, а также как изменить файловую группу хранения постоянных версий (PVS), используемую ADR.
Примечание.
В Базе данных SQL Azure, Управляемом экземпляре SQL Azure и базе данных SQL в Microsoft Fabric всегда включено ускоренное восстановление базы данных (ADR). При возникновении проблем, таких как высокое использование хранилища PVS или медленная очистка ADR, см. Мониторинг и устранение неполадок ускоренного восстановления базы данных или обратитесь в службу поддержки Azure .
Когда следует использовать ускоренное восстановление баз данных
Многие клиенты находят ускорение восстановления базы данных (ADR) ценной технологии для улучшения времени восстановления базы данных.
Если рабочие нагрузки базы данных часто сталкиваются со следующими сценариями, вы можете воспользоваться ADR:
- Длительные транзакции, которые нельзя избежать. Например, в случаях, когда длительные транзакции подвержены риску отката, ADR может помочь.
- Активные транзакции, которые приводят к значительному росту журнала транзакций.
- Длительное восстановление базы данных, влияющее на доступность базы данных (например, после неожиданного перезапуска SQL Server или отката транзакций вручную).
Если приложение использует большой объем однострочных изменений в отдельных транзакциях, рабочая нагрузка может оказаться не оптимальной для ADR. Рассмотрите возможность пакетного изменения в инструкциях с несколькими строками, где это возможно, и избегайте большого объема небольших транзакций DML.
Включение ADR
ADR отключен по умолчанию и доступен начиная с SQL Server 2019 (15.x).
Используйте следующую команду Transact-SQL (T-SQL), чтобы включить ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Для включения или отключения ADR необходимо включить или отключить монопольную блокировку базы данных. Это означает, что команда ALTER DATABASE
блокируется до тех пор, пока все активные сеансы не завершатся, и что все новые сеансы ждут после команды ALTER DATABASE
. Если важно завершить операцию и удалить блокировку, можно использовать предложение завершения, WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
для прерывания любых активных сеансов в базе данных. Дополнительные сведения см. в параметрах ALTER DATABASE SET.
Отключение ADR
Чтобы отключить ADR, используйте следующую команду T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
Даже после отключения ADR могут быть версии, хранящиеся в PVS, которых система всё ещё нуждается для логического возврата до завершения всех активных транзакций.
Изменение файловой группы PVS
По умолчанию данные сохраняемого хранилища версий (PVS) хранятся в файловой группе PRIMARY
. При необходимости можно переместить PVS в другую файловую группу. Например, может потребоваться больше места или более быстрого хранения.
Чтобы изменить расположение PVS на другую файловую группу, выполните следующие действия.
Создайте файловую группу для PVS и добавьте хотя бы один файл данных в эту файловую группу. Например:
ALTER DATABASE [<db_name>] ADD FILEGROUP [VersionStoreFG]; GO ALTER DATABASE [<db_name>] ADD FILE ( NAME = N'VersionStoreFG', FILENAME = N'E:\DATA\VersionStore.ndf', SIZE = 8192 MB, FILEGROWTH = 64 MB ) TO FILEGROUP [VersionStoreFG];
Отключите ADR со следующей командой T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
Дождитесь удаления всех версий, хранящихся в PVS.
Чтобы включить ADR, используя новое расположение PVS, сначала убедитесь, что все сведения о версиях удалены из предыдущего расположения PVS. Вы можете принудительно выполнить очистку с помощью хранимой процедуры sys.sp_persistent_version_cleanup:
EXEC sys.sp_persistent_version_cleanup [<db_name>];
Хранимая процедура
sys.sp_persistent_version_cleanup
является синхронной, что означает, что она не завершится, пока все сведения о версии не будут удалены из текущего PVS. После завершения процесса и при отключении ADR можно убедиться, что сведения о версии удаляются, запрашивая sys.dm_tran_persistent_version_store_stats и проверяя значениеpersistent_version_store_size_kb
. Например:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
Когда значение
persistent_version_store_size_kb
равно0
, повторно включите ADR и разместите PVS в новой файловой группе.Включите ADR и укажите новое расположение PVS с помощью следующей команды T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
Контроль размера PVS
После включения ADR в базе данных отслеживайте размер сохраняемого хранилища версий (PVS) и производительности очистки PVS. Дополнительные сведения см. в статье Мониторинг и устранение неполадок с ускорением восстановления базы данных.