Em nosso banco de dados de produção há uma tabela de 180 GB, cerca de 2 milhões de registros, desejo recriá-la como uma nova tabela vazia em um novo grupo de arquivos e excluir a tabela existente. Qual é a melhor prática para executar esta tarefa sem afetar o desempenho do banco de dados?
Minha preocupação de tempo será renomear a tabela e descartá-la.
Eu quero adicionar que este é um banco de dados de carga muito alta, então não quero obter nenhum bloqueio ou consultas de execução longa.
Elimine a tabela antiga e renomeie a nova em uma transação:
Se você tiver dúvidas sobre quanto tempo a queda em si levará, você pode fazer desta maneira:
(A queda tecnicamente não precisa fazer parte da transação e não deve causar nenhum bloqueio em nenhum caso, então agora quanto tempo a queda realmente leva é amplamente irrelevante, porque não há chance de bloquear ninguém. )
Se você tiver índices, chaves estrangeiras, etc., também terá que lidar com eles, mas o acima é o mais rápido que você obterá, porque são principalmente metadados (na pior das hipóteses
DROP
, serão bloqueados pela atividade existente).Veja também o Esquema Switch-A-Roo parte 1 e parte 2 se sua situação for mais complexa.