MySQL recupera o espaço de índice após a exclusão grande?

1

Depois de executar uma grande exclusão no MySQL, eu entendo que você precisa executar um NULL ALTER para recuperar disco espaço, isso também é verdade para recuperar o espaço de índice?

Temos tabelas usando > 10G de espaço de índice e excluímos / arquivamos grandes blocos desses dados e não temos certeza se precisamos reconstruir a tabela para diminuir o tamanho do índice .

Alguém pode oferecer algum conselho?

Estamos tentando evitar a reconstrução da tabela, já que levaria um bom tempo e trancaria a tabela.

Obrigado!

    
por cdunn 22.10.2013 / 22:30

1 resposta

1

Você está usando o InnoDB. Infelizmente, em sua configuração padrão, o InnoDB nunca devolve o espaço em disco a menos que você esteja usando innodb_file_per_table , nesse caso o espaço em disco pode ser re-reivindicado executando optimize table foo .

Se você não estiver usando innodb_file_per_table , será necessário fazer o seguinte:

  1. Use mysqldump para despejar seus bancos de dados em um arquivo.
  2. Descarte seus bancos de dados.
  3. Pare o mysql.
  4. Exclua seus arquivos innodb (ou mova-os para outro lugar).
  5. Inicie o mysql.
  6. Recrie seus bancos de dados e importe novamente do arquivo mysqldump.

Escusado será dizer que é melhor certificar-se de que tem um backup muito bom antes de o fazer. Além disso, considere a possibilidade de ativar innodb_file_per_table enquanto o mysql estiver parado.

    
por 22.10.2013 / 23:45

Tags