Mysql
 sql >> Database >  >> RDS >> Mysql

Il file di dati MySQL non si ridurrà

La dimensione del file dei tablespace di InnoDB non si ridurrà mai automaticamente, indipendentemente dalla quantità di dati eliminati.

Quello che potresti fare, anche se è un grande sforzo, è creare un tablespace per ogni tabella impostando

innodb_file_per_table

La parte lunga di questo è che devi esportare TUTTI I DATI dal server mysql (configurare un nuovo server sarebbe più semplice) e quindi reimportare i dati. Invece di un singolo file ibdata1 che contiene i dati per ogni singola tabella, troverai molti file chiamati tablename.ibd che contengono i dati solo per una singola tabella.

Dopo:

Quando quindi elimini molti dati dalle tabelle, puoi consentire a mysql di ricreare il file di dati emettendo

alter table <tablename> engine=myisam;

per passare a MyIsam (e cancellare il file di dati InnoDB per questa tabella) e poi

alter table <tablename> engine=innodb;

per ricreare la tabella.