Ajuste de desempenho da tabela de purga de dados no SQL Server 2016

Aug 15 2020

Eu tenho que automatizar o enorme volume de dados da tabela principal para o arquivo.

Passos que estou seguindo:

  1. Estou inserindo os dados da tabela principal na tabela de arquivo.

  2. Após a verificação cruzada da contagem em ambas as tabelas, exclua os dados da tabela principal.

Risco: a instrução de exclusão pode entrar no estado travado e o banco de dados entrará no modo de recuperação.

Observação : não podemos executar nenhuma operação DDL na tabela principal, pois é uma tabela de transações ao vivo. Podemos ir com DML.

  • Banco de dados: SQLServer 2016
  • SO: Windows e IIS

Respostas

4 MTay Aug 15 2020 at 15:58

DDL é uma das principais formas de acelerar a exclusão de registros, mas como DDL não é uma opção e você está enfrentando 'estados travados' para instruções de exclusão, talvez eu sugira a exclusão de registros em lotes?

Consulte o link e aqui está um exemplo de consulta com base no link:

DECLARE @Batch INT = 1000
WHILE 1 = 1
BEGIN
    DELETE TOP (@Batch)
    FROM MyTable
    WHERE Date < ‘20200401’';
    IF @@ROWCOUNT < @Batch BREAK
END

Neste caso, quando estamos excluindo por Data, certifique-se de ter um índice em Data para que o SQL Server possa capturar rapidamente apenas essas linhas. Você deseja evitar o bloqueio no nível da tabela.