Gerencie a recuperação acelerada do banco de dados
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores
Este artigo ensina a habilitar e desabilitar de recuperação acelerada de banco de dados (ADR) com Transact-SQL (T-SQL) no SQL Server 2019 (15.x) e versões posteriores, bem como alterar o grupo de arquivos de armazenamento de versão persistente (PVS) usado pelo ADR.
Observação
No Banco de Dados SQL do Azure, na Instância Gerenciada SQL do Azure e no Banco de Dados SQL no Microsoft Fabric, a recuperação acelerada de banco de dados (ADR) está sempre habilitada. Se observar problemas, como elevado uso de armazenamento pelo PVS ou limpeza lenta do ADR, consulte Solucionar problemas de recuperação acelerada de base de dados ou entre em contacto com o suporte da Azure .
Quem deve considerar a recuperação acelerada do banco de dados
Muitos clientes consideram a recuperação acelerada de banco de dados (ADR) uma tecnologia valiosa para melhorar o tempo de recuperação do banco de dados.
Se as cargas de trabalho do banco de dados encontrarem frequentemente os seguintes cenários, você poderá se beneficiar do ADR:
- Transações de longa duração que não podem ser evitadas. Por exemplo, nos casos em que transações de longa duração correm o risco de serem revertidas, o ADR pode ajudar.
- Transações ativas que fazem com que o log de transações cresça significativamente.
- Recuperação de banco de dados de longa execução que afeta a disponibilidade do banco de dados (por exemplo, após uma reinicialização inesperada do SQL Server ou reversão manual de transações).
A RAL não é recomendada para os seguintes cenários:
- Não há suporte para bases de dados que usam o espelhamento de base de dados .
- Se seu aplicativo usa um grande volume de modificações de linha única em transações individuais, sua carga de trabalho pode não ser ideal para ADR. Considere agrupar modificações em declarações de múltiplas linhas sempre que possível e evite um grande volume de pequenas transações DML.
Ativar ADR
O ADR está desativado por padrão e disponível a partir do SQL Server 2019 (15.x).
Use o seguinte comando Transact-SQL (T-SQL) para habilitar o ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
É necessário um bloqueio exclusivo da base de dados para ativar ou desativar o ADR. Isso significa que o comando ALTER DATABASE
é bloqueado até que todas as sessões ativas sejam eliminadas e que todas as novas sessões aguardam atrás do comando ALTER DATABASE
. Se for importante concluir a operação e remover o bloqueio, você pode usar a cláusula de rescisão, WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
para anular quaisquer sessões ativas no banco de dados. Para obter mais informações, consulte ALTER DATABASE SET opções.
Desativar ADR
Use o seguinte comando T-SQL para desabilitar o ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
Mesmo depois que o ADR é desativado, pode haver versões armazenadas no PVS que o sistema ainda precisa para reverter logicamente até que todas as transações ativas sejam concluídas.
Alterar o grupo de arquivos PVS
Por padrão, os dados de armazenamento de versão persistente (PVS) estão no PRIMARY
grupo de arquivos. Você pode mover o PVS para um grupo de arquivos diferente, se necessário. Por exemplo, pode exigir mais espaço ou armazenamento mais rápido.
Para alterar a localização do PVS para um grupo de ficheiros diferente, siga estes passos:
Crie o grupo de arquivos para PVS e adicione pelo menos um arquivo de dados a esse grupo de arquivos. Por exemplo:
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];
Desative o ADR com o seguinte comando T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
Aguarde até que todas as versões armazenadas no PVS sejam removidas.
Para habilitar o ADR usando um novo local PVS, primeiro verifique se todas as informações de versão foram limpas do local PVS anterior. ** Você pode forçar a limpeza para ocorrer com o procedimento armazenado sys.sp_persistent_version_cleanup.
EXEC sys.sp_persistent_version_cleanup [<db_name>];
O procedimento armazenado
sys.sp_persistent_version_cleanup
é síncrono, o que significa que ele não será concluído até que todas as informações de versão sejam limpas do PVS atual. Depois de concluir, pode verificar se as informações de versão foram removidas consultando sys.dm_tran_persistent_version_store_stats e examinando o valor depersistent_version_store_size_kb
, como no exemplo a seguir:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
Quando o valor de
persistent_version_store_size_kb
é0
, você pode reativar o recurso ADR, com o PVS no novo grupo de arquivos.Habilite o ADR e especifique o novo local do PVS com o seguinte comando T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
Monitore o tamanho do PVS
Depois de habilitar o ADR em um banco de dados, monitore o tamanho do armazenamento de versão persistente (PVS) e o desempenho da limpeza do PVS. Você pode monitorar a integridade do PVS usando os métodos encontrados em Solucionar problemas de recuperação acelerada de banco de dados.
Se tiver uma carga de trabalho com um alto volume de instruções DML (INSERT
, UPDATE
, DELETE
, MERGE
), como OLTP de alto volume, pode exigir um período de descanso ou recuperação para que o processo de limpeza PVS recupere espaço. Normalmente, os ciclos de operação de negócios permitem esse tempo, mas em alguns cenários você pode querer iniciar o processo de limpeza PVS manualmente para aproveitar os padrões de atividade do aplicativo.
Para ativar o processo de limpeza PVS manualmente entre tarefas de trabalho ou durante os períodos de manutenção, use o procedimento armazenado sys.sp_persistent_version_cleanup.
Se o processo de limpeza do PVS estiver em execução por um longo período de tempo, você pode descobrir que a contagem de transações abortadas cresce, o que também faz com que o tamanho do PVS aumente. Use o sys.dm_tran_aborted_transactions DMV para relatar a contagem de transações abortadas e use sys.dm_tran_persistent_version_store_stats para relatar os horários de início/término da limpeza juntamente com o tamanho do PVS.
Cargas de trabalho com consultas de longa execução usando isolamento
SNAPSHOT
ou isolamentoREAD COMMITTED
quando a opção de banco de dadosREAD_COMMITTED_SNAPSHOT
(RCSI) está habilitada podem atrasar a limpeza do PVS para todos os bancos de dados em uma instância do mecanismo de banco de dados, fazendo com que o tamanho do PVS aumente. Para obter mais informações, consulte a seção sobre longas varreduras de instantâneos ativos em Solucionar problemas de recuperação acelerada de banco de dados.