Ao usar a instrução DELETE para remover dados de uma tabela MySQL grande, o espaço em disco não é liberado imediatamente. O banco de dados apenas marca os registros ou páginas de dados como reutilizáveis. Para recuperar o espaço da tabela e reduzir o uso do disco, execute a instrução OPTIMIZE TABLE.
Pré-requisitos
A instrução
OPTIMIZE TABLEé compatível apenas com os mecanismos de armazenamento InnoDB e MyISAM.-
O espaço disponível em disco da instância deve ser maior ou igual ao tamanho da tabela a ser otimizada.
NotaSe o espaço em disco disponível for insuficiente, primeiro expand the disk space. Após a conclusão da operação, reduza a escala conforme necessário e o sistema refund the price difference.
Observações de uso
Exclua um grande volume de dados antes: Executar
OPTIMIZE TABLEnão reduz efetivamente o uso do espaço da tabela, a menos que você tenha excluído previamente uma quantidade significativa de dados com a instruçãoDELETE.Aumento temporário no uso do disco: A execução de
OPTIMIZE TABLEcria uma tabela temporária para armazenar os dados reorganizados, o que aumenta provisoriamente o consumo de espaço em disco. Ao final do processo, a tabela temporária é excluída e o uso do disco retorna ao normal.Estatísticas podem não mudar após a recuperação: Embora o espaço em disco seja liberado, as estatísticas da tabela podem não ser atualizadas de imediato. Para mais informações, consulte Why does the storage usage of my ApsaraDB RDS for MySQL instance remain unchanged after I run OPTIMIZE TABLE?.
Impacto no desempenho e riscos em horários de pico: No ApsaraDB RDS for MySQL 5,7 e 8,0, a instrução
OPTIMIZE TABLEusa DDL online, permitindo operações DML simultâneas. Contudo, executar essa operação em tabelas grandes pode causar picos repentinos no consumo de I/O e recursos de buffer. Isso pode gerar bloqueios de tabela ou contenção de recursos, levando potencialmente à indisponibilidade da instância ou a interrupções no monitoramento durante horários de pico. Portanto, realize essa operação fora dos horários de pico para evitar impactos nos negócios.
Uso da linha de comando
Connect to the ApsaraDB RDS for MySQL instance by using a client.
Use a instrução
DELETEpara remover dados desnecessários conforme suas necessidades de negócio.-
Execute a instrução
OPTIMIZE TABLEpara recuperar o espaço da tabela.OPTIMIZE TABLE <$Database1>.<Table1>,<$Database2>.<Table2>;Nota<$Database1> e <$Database2> são nomes de bancos de dados. <Table1> e <Table2> são nomes de tabelas.
-
Ao executar a instrução
OPTIMIZE TABLEno mecanismo de armazenamento InnoDB, a seguinte mensagem é retornada. Essa mensagem é esperada e pode ser ignorada. A operação foi bem-sucedida se a saída contiver "ok". Para mais detalhes, consulte Instrução OPTIMIZE TABLE.Table does not support optimize, doing recreate + analyze instead
Uso do DMS
No painel de navegação à esquerda, selecione o ID da instância de destino, clique duas vezes no banco de dados desejado, clique com o botão direito em qualquer nome de tabela e selecione batch operation table.
Selecione as tabelas das quais deseja recuperar espaço e escolha .

Na caixa de diálogo exibida, confirme se as informações estão corretas e clique em OK.