Ajuste de desempenho da tabela de purga de dados no SQL Server 2016
Eu tenho que automatizar o enorme volume de dados da tabela principal para o arquivo.
Passos que estou seguindo:
Estou inserindo os dados da tabela principal na tabela de arquivo.
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
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.