Temos um enorme banco de dados de produção, seu tamanho é de cerca de 300 GB. Existe alguma abordagem para melhorar o desempenho de uma consulta de exclusão? No momento, a velocidade de exclusão está entre 1 e 10k por minuto, é muito lenta para nós.
Temos um enorme banco de dados de produção, seu tamanho é de cerca de 300 GB. Existe alguma abordagem para melhorar o desempenho de uma consulta de exclusão? No momento, a velocidade de exclusão está entre 1 e 10k por minuto, é muito lenta para nós.
Respostas:
Se você estiver tentando excluir um grande número de linhas em uma única instrução, é provável que esteja aguardando a atividade de log. Então você pode:
TRUNCATEou DROP/ CREATE.SELECT INTOpara colocar os dados que deseja manter em outra tabela e, em seguida TRUNCATE, mova a pequena parte para trás. (Ou simplesmente solte a tabela antiga, renomeie a nova e aplique restrições / permissões etc.)CHECKPOINTlimpar o log em vez de fazer backups de log, mas precisará restaurá -lo e fazer um novo backup completo para reiniciar a cadeia de logs .Há alguma dica, mas qual versão você está usando? É edição empresarial? De qualquer forma:
Adicione detalhes, quando você trabalha com um grande banco de dados, não há uma única resposta válida.
Você deve tentar excluí-los pedaço por pedaço, provavelmente excluindo em loop, cada iteração de exclusão é sua própria transação e, em seguida, limpando o log no final de cada iteração de loop.
Além disso, você precisaria encontrar o número que usará como valor no chunk para excluir os registros. Exige um teste completo, seria melhor se você pudesse testar primeiro o valor da parte no UAT.
Para saber como proceder, remeta para Quebrar grandes operações de exclusão em pedaços
A exclusão pode ser lenta se a tabela grande tiver chave estrangeira recursiva.
nesse caso, encontre tempo oportuno, desative os serviços dependentes, desabilite a chave estrangeira recursiva, execute uma exclusão massiva e restaure a chave estrangeira novamente.
Adicionando mais alguns pontos ...
tablockopção.Para obter mais ajuda, poste a consulta que você está usando, as informações da tabela mais as informações de bloqueio.