Compartilhar via


Gerenciar Recuperação Acelerada de 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 como alterar o grupo de arquivos PVS (repositório de versão persistente) usado pela ADR.

Observação

No Banco de Dados SQL do Azure, na Instância Gerenciada de SQL do Azure e no Banco de Dados SQL no Microsoft Fabric, a ADR (recuperação acelerada de banco de dados) está sempre habilitada. Se você observar problemas, como alto uso de armazenamento por PVS ou limpeza lenta da ADR, confira Solucionar problemas de recuperação acelerada de banco de dados ou contate o Suporte do Azure.

Quem deve considerar usar a recuperação de banco de dados acelerada

Muitos clientes acham a ADR (recuperação acelerada de banco de dados) uma tecnologia valiosa para melhorar o tempo de recuperação do banco de dados.

Se suas cargas de trabalho de banco de dados encontrarem frequentemente os seguintes cenários, você poderá se beneficiar da ADR:

  • Transações de execução prolongada que não podem ser evitadas. Por exemplo, nos casos em que as transações de longa duração correm o risco de serem revertidas, a ADR pode ajudar.
  • Transações ativas que fazem com que o log de transações aumente significativamente.
  • Recuperação de banco de dados de execução prolongada 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 ADR não é recomendada para os seguintes cenários:

  • Não há suporte para bancos de dados que utilizem espelhamento de banco de dados.
  • Se o aplicativo usar um alto volume de modificações de linha única em transações individuais, sua carga de trabalho poderá não ser ideal para a ADR. Considere agrupar modificações em instruções de múltiplas linhas sempre que possível e evite um alto volume de transações DML pequenas.

Habilitar a ADR

A ADR está desativada por padrão e disponível a partir do SQL Server 2019 (15.x).

Use o seguinte comando Transact-SQL (T-SQL) para habilitar a ADR:

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;

Um bloqueio de banco de dados exclusivo é necessário para habilitar ou desabilitar a ADR. Isso significa que o comando ALTER DATABASE é bloqueado até que todas as sessões ativas tenham sido encerradas e que todas as novas sessões aguardem na fila do comando ALTER DATABASE. Se for importante concluir a operação e remover o bloqueio, você poderá usar a cláusula de terminação, WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT] anular as sessões ativas no banco de dados. Para obter mais informações, consulte Opções ALTER DATABASE SET.

Desabilitar ADR

Use o seguinte comando T-SQL para desabilitar a ADR:

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO

Mesmo depois que a ADR estiver desabilitada, pode haver versões armazenadas em PVS que o sistema ainda precisa para a reversão lógica até que todas as transações ativas sejam concluídas.

Alterar o grupo de arquivos PVS

Por padrão, os dados de PVS (repositório de versão persistente) estão no grupo de arquivos PRIMARY. Você pode mover a PVS para um grupo de arquivos diferente, se necessário. Por exemplo, pode exigir mais espaço ou armazenamento mais rápido.

Para alterar o local da PVS para um grupo de arquivos diferente, siga estas etapas:

  1. 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];
    
  2. Desabilite a ADR com o seguinte comando T-SQL:

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
    GO
    
  3. Aguarde até que todas as versões armazenadas em PVS sejam removidas.

    Para habilitar a ADR usando um novo local de PVS, primeiro verifique se todas as informações de versão foram limpas do local anterior da PVS. Você pode forçar que a limpeza ocorra 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 eliminadas do PVS atual. Assim que estiver concluído, você poderá verificar se as informações de versão foram removidas consultando sys.dm_tran_persistent_version_store_stats e examinando o valor de persistent_version_store_size_kb, como no seguinte exemplo:

    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 habilitar novamente o recurso ADR, com a PVS no novo grupo de arquivos.

  4. Habilite a ADR e especifique o novo local de PVS com o seguinte comando T-SQL:

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON
    (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
    

Monitorar o tamanho do PVS

Depois de habilitar a ADR em um banco de dados, monitore o tamanho do repositório de versão persistente (PVS) e do desempenho de limpeza de PVS. Você pode monitorar a integridade da PVS usando os métodos encontrados em Solucionar problemas de recuperação acelerada de banco de dados.

Se você tiver uma carga de trabalho com um alto volume de instruções DML (INSERT, UPDATE, DELETE, MERGE), como um alto volume de OLTP, poderá ser necessário um período de repouso ou recuperação para que o processo de limpeza do PVS consiga recuperar espaço. Normalmente, os ciclos de operação de negócios permitem esse tempo, mas em alguns cenários talvez você queira iniciar o processo de limpeza de PVS manualmente para aproveitar os padrões de atividade do aplicativo.

  • Para ativar manualmente o processo de limpeza de PVS entre cargas de trabalho ou durante janelas de manutenção, use o procedimento armazenado sys.sp_persistent_version_cleanup.

  • Se o processo de limpeza de PVS estiver em execução por um longo período, você poderá descobrir que a contagem de transações anuladas aumenta, o que também provoca o aumento do tamanho do PVS. Use a DMV sys.dm_tran_aborted_transactions para informar a contagem de transações anuladas e use sys.dm_tran_persistent_version_store_stats para informar os horários de início/término da limpeza e o tamanho do PVS.

  • Cargas de trabalho com consultas de execução prolongada usando isolamento SNAPSHOT ou isolamento READ COMMITTED quando a opção de banco de dados READ_COMMITTED_SNAPSHOT (RCSI) está habilitada podem atrasar a limpeza de 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, confira a seção sobre varreduras de instantâneo ativo prolongadas em Solucionar problemas de recuperação acelerada de banco de dados.